Re: recursion limit exceeded in Python API, but there's only one function in traceback

Phil Muldoon <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
On 16/10/14 15:28, [email protected] wrote:
> On Oct 16, 2014, at 8:45 AM, Phil Muldoon <[email protected]> wrote:
>
>> On 16/10/14 11:45, Ömer Sinan Ağacan wrote:
>>> Hi all,
>>>
>>> I'm putting some breakpoints and then running some actions when
>>> program reaches that points, using Python API.
>>>
>>> After a few breaks, GDB is starting to print these lines:
>>>
>>> Traceback (most recent call last):
>>>  File "/home/omer/gdb_script/script.py", line 71, in handle_breakpoint
>>>    self.breakpoint_jump_addrs[bp.location].add(addr)
>>> RuntimeError: maximum recursion depth exceeded
>> That's an error from Python.  It tells me something in script.py is
>> not quite right.  Impossible to tell without seeing script.py in
>> general.  You can increase the recursion depth by doing something like
>>
>> import sys
>> sys.setrecursionlimit(9000)
>>
>> Where '9000' is a limit you can set and vary.  However, this might
>> indeed be papering over the cracks, and not fixing the fault.
> I would expect that you could wrap the script in a try/except block, to catch the stack overflow and print a Python stack trace when that happens.
>
> Should GDB print a Python backtrace when the Python script fails, just as executing a Python script standalone would do?

It prints an abbreviated backtrace by default.  "set python print-stack full" will enable the full backtrace (we had a request to do this for pretty printers).

Cheers

Phil
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.