in reply to How to find perl line after segfault.
Is it possible to find the perl line number, with backtrace, if possible, of where the error occurred?
Perl doesn't catch segfaults; so by the time it has occurred, perl has lost control and can do nothing.
Otherwise, maybe I should run Devel::Trace, or something similiar, while testing.
Devel::Trace slows things down horribly and produces reams of output. Try Devel::CallTrace instead.
A faulting program:
#! perl -slw use strict; sub segfault { my $x = unpack 'P', \ ""; } sub a { segfault(); } sub b { a(); } sub c{ b(); } c();
A run under Devel::CallTrace:
C:\test>perl -d:CallTrace junk.pl Devel::CallTrace::import (c:/perl64/site/lib/Devel/CallTrace.pm:75-78 +) CODE(0x276280) CODE(0x2762f8) strict::import (c:/perl64/lib/strict.pm:34-37) main::c (junk.pl:10-10) main::b (junk.pl:9-9) main::a (junk.pl:8-8) main::segfault (junk.pl:4-6)
Then, if the faulting subroutine is large, you can enable Devel::Trace on entry and disable it on exit to that one subroutine to get you down to the line number.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: How to find perl line after segfault.
by Steve_BZ (Chaplain) on Feb 10, 2015 at 12:53 UTC | |
by QM (Parson) on Feb 10, 2015 at 14:52 UTC | |
by Steve_BZ (Chaplain) on Feb 15, 2015 at 10:14 UTC | |
by QM (Parson) on Feb 16, 2015 at 09:18 UTC | |
by BrowserUk (Patriarch) on Feb 10, 2015 at 19:33 UTC | |
by Steve_BZ (Chaplain) on Feb 14, 2015 at 18:43 UTC | |
by BrowserUk (Patriarch) on Feb 14, 2015 at 20:32 UTC | |
by Steve_BZ (Chaplain) on Feb 14, 2015 at 21:05 UTC | |
|