Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re^3: Debugging a program

by hexcoder (Deacon)
on Aug 06, 2008 at 17:22 UTC ( #702691=note: print w/replies, xml ) Need Help??


in reply to Re^2: Debugging a program
in thread Debugging a program

Thanks, that saves the action of setting a breakpoint.

But even better, I could shift the signal handler code into the debugger initialization file .perldb. Then I do not have to modify the original source code. Works great!

This is the content of file .perldb (place it in the current or in the home directory):

sub afterinit { $::SIG{'__WARN__'} = sub { my $warning = shift; if ( $warning =~ m{\s at \s \S+ \s line \s \d+ \. $}xms ) { $DB::single = 1; # debugger stops here automatically } warn $warning; }; print "sigwarn handler installed!\n"; return; }

Replies are listed 'Best First'.
Re^4: Debugging a program
by hexcoder (Deacon) on Jul 18, 2016 at 11:59 UTC
    Addition
    ... and under Windows save it to file perldb.ini in your %HOMEDRIVE%%HOMEPATH% directory.

    Then make sure to set the file attributes to read-only. That way it is safe and the debugger is happy.

      With Strawberry Perl 5.26.2 (Windows 7) I got some complaints about unknown terminal window size when starting the debugger.
      Unable to get Terminal Size. The Win32 GetConsoleScreenBufferInfo call + didn't work. The COLUMNS and LINES environment variables didn't work +. at C:/Strawberry/perl/vendor/lib/Term/ReadLine/readline.pm line 410 +.

      These lines in sub afterinit take care of it:
      my ($cols, $lines) = split ' ', (grep { m{^\s*\d+\s+\d+\s}xms } `p +owershell -command "&{\$H=get-host;\$H.ui.rawui.WindowSize;}"`)[0]; $ENV{'COLUMNS'} = $cols; $ENV{'LINES'} = $lines; print "COLUMNS and LINES are set ($cols,$lines).\n";

      Powershell is used here to get the console property WindowSize. Then the environment variables COLUMNS and LINES are locally set and the readline.pm module is happy.

        Sweet!

        I'd prob do it this way:

        my( $cols, $lines ) = qx( powershell -command "&{ \$H=get-host; \$H.ui +.rawui.WindowSize.Width; \$H.ui.rawui.WindowSize.Height; }" ) =~ /(\d ++)/g;
        I reckon we are the only monastery ever to have a dungeon stuffed with 16,000 zombies.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://702691]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (9)
As of 2019-08-19 13:06 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    If you were the first to set foot on the Moon, what would be your epigram?






    Results (140 votes). Check out past polls.

    Notices?