in reply to Under the Perl debugger

Try checking if $INC{'perl5db.pl'} is set.

Edit: And if you use ptkdb, simply check for $INC{'Devel/ptkdb.pm'}.

-Thomas
"Excuse me for butting in, but I'm interrupt-driven..."

Replies are listed 'Best First'.
Re^2: Under the Perl debugger
by mpersico (Monk) on Mar 14, 2016 at 21:27 UTC

    DUH! I started by looking for perl5db.pl when I was running under Devel::ptkdb, forgetting that any other debugger is loaded INSTEAD of perl5db.pl, not of ON TOP OF perl5db.pl.

    I had also thought that I could use the current value of $DB::single to determine if I was in the debugger; that way I could get a value for the function no matter what debugger you are running. For some reason, however, I only see its value as zero, even under -d.

    Anyway, here is what I am using for now:

    sub am_i_debugging { print "$DB::single\n"; return (the_debugger_is()) ? 1 : 0; } sub the_debugger_is { return '-d:ptkdb' if(exists $INC{'Devel/ptkdb.pm'}); return '-d' if(exists $INC{'perl5db.pl'}); return ''; } print( join("\n", am_i_debugging(), the_debugger_is(), ''));
      No!

      As already said, checking &DB::DB is the way to go. There are some IDEs and tools patching and renaming the debugger.

      Cheers Rolf
      (addicted to the Perl Programming Language and ☆☆☆☆ :)
      Je suis Charlie!