In article <[EMAIL PROTECTED]>,
[EMAIL PROTECTED] (Matthew O. Persico) writes:
>On 11 Jan 2004 17:33:32 -0000, Peter Scott wrote:
>> In article <[EMAIL PROTECTED]>,
>> [EMAIL PROTECTED] (Gabor Szabo) writes:
>>>
>>> Any idea how can I use the debugger to find the cause of
>>> a deep recursion in my code ?
>>
>> I don't see the need for the debugger. Deep recursion is a
>> warning, so
>> just turn the warning into a fatal error with stack trace:
>>
>> % perl -MCarp=confess -we '$SIG{__WARN__} = sub {confess @_ }; \
>> sub foo { foo() } foo'
>
>Since this will turn ALL warnings into errors, you will have to make sure
> you don't have any warning-causing code in your program before you get to
> the recursion.
True. In which case, something like
$SIG{__WARN__} = sub { $_[0] =~ /recursion/ and confess @_; warn @_ }
should work (untested).
> You will also have to throw the -w switch when you call perl
> (as specified in the example above). If you currently are not running with
> -w (or use warnings;), be prepared for some cleanup work.
The "deep recursion" message only shows up with -w/use warnings, so I
assumed one of them was already turned on.
--
Peter Scott
http://www.perldebugged.com/
*** NEW *** http//www.perlmedic.com/