[Python-checkins] python/dist/src/Misc gdbinit,1.4,1.5
montanaro at users.sourceforge.net
montanaro at users.sourceforge.net
Fri Apr 2 09:51:16 EST 2004
Update of /cvsroot/python/python/dist/src/Misc
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3355
Modified Files:
gdbinit
Log Message:
include local variables when dumping Python stack trace
Index: gdbinit
===================================================================
RCS file: /cvsroot/python/python/dist/src/Misc/gdbinit,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** gdbinit 1 Mar 2004 15:44:05 -0000 1.4
--- gdbinit 2 Apr 2004 14:51:13 -0000 1.5
***************
*** 27,39 ****
end
- # If you are in an eval_frame() function, calling pyframe with no
- # arguments will print the filename, function name, and line number.
- # It assumes that f is the name of the current frame.
- define pyframe
- x/s ((PyStringObject*)f->f_code->co_filename)->ob_sval
- x/s ((PyStringObject*)f->f_code->co_name)->ob_sval
- p f->f_lineno
- end
-
# Here's a somewhat fragile way to print the entire Python stack from gdb.
# It's fragile because the tests for the value of $pc depend on the layout
--- 27,30 ----
***************
*** 47,50 ****
--- 38,77 ----
# statement tests to see if we are in eval_frame().
+ # print the local variables of the current frame
+ define pylocals
+ set $_i = 0
+ while $_i < f->f_nlocals
+ if f->f_localsplus + $_i != 0
+ set $_names = co->co_varnames
+ set $_name = PyString_AsString(PyTuple_GetItem($_names, $_i))
+ printf "%s:\n", $_name
+ # side effect of calling _PyObject_Dump is to dump the object's
+ # info - assigning just prevents gdb from printing the
+ # NULL return value
+ set $_val = _PyObject_Dump(f->f_localsplus[$_i])
+ end
+ set $_i = $_i + 1
+ end
+ end
+
+ # print the current frame
+ define pyframe
+ set $__fn = PyString_AsString(co->co_filename)
+ set $__n = PyString_AsString(co->co_name)
+ printf "%s (%d): %s\n", $__fn, f->f_lineno, $__n
+ pylocals
+ end
+
+ # print the entire Python call stack
+ define pystack
+ while $pc < Py_Main || $pc > Py_GetArgcArgv
+ if $pc > eval_frame && $pc < PyEval_EvalCodeEx
+ pyframe
+ end
+ up-silently 1
+ end
+ select-frame 0
+ end
+
define pystack
while $pc < Py_Main || $pc > Py_GetArgcArgv
More information about the Python-checkins
mailing list