[Python-Dev] How to debug pyexpat SIGSEGV with GDB?
Jeremy Hylton
jeremy at alum.mit.edu
Mon Mar 1 10:16:14 EST 2004
On Mon, 2004-03-01 at 10:09, Skip Montanaro wrote:
> >> So, how can I figure out where in the Python source the function call
> >> is coming from using gdb? I'm sure it involves "print" and some
> >> casts.. I couldn't find a howto on python.org
>
> Jeremy> First, make sure that the code from Misc/gdbinit is in your
> Jeremy> .gdbinit file. Get the stack trace in gdb and move up/down
> Jeremy> until you get to an eval_frame() frame. Then call the function
> Jeremy> pyframe. It will print the filename, function name, and line
> Jeremy> number of the current frame. The lineno usually points to the
> Jeremy> first line of the function.
>
> I have this in my .gdbinit file:
>
> define ppystack
> while $pc < Py_Main || $pc > Py_GetArgcArgv
> if $pc > eval_frame && $pc < PyEval_EvalCodeEx
> set $__fn = PyString_AsString(co->co_filename)
> set $__n = PyString_AsString(co->co_name)
> printf "%s (%d): %s\n", $__fn, f->f_lineno, $__n
> end
> up-silently 1
> end
> select-frame 0
> end
That's nice! I never learned how to write real programs in gdb.
You should add a copy to gdbinit.
Jeremy
More information about the Python-Dev
mailing list