http://www.perlmonks.org?node_id=948861


in reply to Enbugger on Windows

if( 'morgon' eq $ENV{PERLDEBUG} ) { delete $ENV{PERLDEBUG}; exec( $^X, '-d', $0, @ARGV ); die "Can't exec $^X: $!\n"; }

Though, if perl2exe ends up passing -I or similar switches to the extracted perl.exe, then this trick requires minor adjustments. You'll also need to generate the exe so that it includes perl5db.pl and maybe a couple of other things.

- tye        

Replies are listed 'Best First'.
Re^2: Enbugger on Windows (add your own -d)
by morgon (Priest) on Jan 20, 2012 at 15:15 UTC
    This is unfortunately not working for me.

    In my perl2exe-compiled binary $^X is set to the exe itself and the -d does then not start the debugger but is passed on to the application.

    Any ideas on what I could try?

      Sad that perl2exe breaks $^X. They probably consider this a "feature". You could try asking the OS more directly:

      use Win32::API (); sub GetPerlExePath { my $f= 'GetModuleFileName'; my $m= Win32::API->new( 'kernel32', $f, 'III', 'I' ) or die "Can't find $f() in kernel32.dll: $^E\n"; my $l= 512; my $s= ' ' x $l; my $a= unpack "I", pack "P", $s; my $r= $m->Call( 0, $a, $l ); die "$f failed: $^E\n" if ! $r; $s= substr( $s, 0, $r ); return $s; }

      - tye