grinder has asked for the wisdom of the Perl Monks concerning the following question:

Monks, I come seeking wisdom.

The issue is quite simple, really, although I am at a loss as to how to proceed. I have a Perl script, perhaps too long to post, and perl itself is dying with Floating point exception and after much instrumentation, I still have no real idea why, where or when, due to evals within evals (and no, I'm not trying to beat obfuscation records) and I have a feeling that may be the cause).

It only dies after several minutes of CPU time (several million iterations), and so short of generating several gigabytes of trace, I don't know how to come closer to the cause.

The question is simple: what kind of tools are available to help me pinpoint and isolate the problem so that I can start working on a simpler test case. For instance, can I trap a signal (which one?) and is there a way to determine the current source line of execution?


--
g r i n d e r

Replies are listed 'Best First'.
Re: Floating point exception
by Anonymous Monk on Apr 01, 2001 at 03:35 UTC
    grinder, try trapping on SIGFPE (sig 8). I believe you can setup a quick trap/stacktrace by doing:

    use sigtrap qw(FPE);

    Other's most likely have better ideas. I've just used similar set ups for quick and dirty testing.

    -dsduncan

Re: Floating point exception
by BlueLines (Hermit) on Apr 01, 2001 at 07:23 UTC
    This is exactly what the perl debugger is for. You can step through the program line by line and check values of variables at any point. You say that the program is too long to do backtraces on, but it seems to me that it would be quicker to spend an hour in the debugger than 4 hours adding debugging statements in your code.

    BlueLines

    Disclaimer: This post may contain inaccurate information, be habit forming, cause atomic warfare between peaceful countries, speed up male pattern baldness, interfere with your cable reception, exile you from certain third world countries, ruin your marriage, and generally spoil your day. No batteries included, no strings attached, your mileage may vary.
      yeah, right.

      Believe me, I've tried all the tricks I know in the debugger, including some of the weirder breakpoint variants, with no joy. Which is why I'm looking for some kind of trick that will give the script some intrinsic method of telling me what's going wrong, rather than me wasting my time trying to spot the problem through an extrinsic analysis.


      --
      g r i n d e r
Re: Floating point exception
by Anonymous Monk on Sep 18, 2009 at 05:47 UTC
    this is obviously way to late, but maybe you need to update the perl version