Commit 0bb2a65d authored by Skip Montanaro's avatar Skip Montanaro

split functionality into pystack and pystackv commands. The former will

work with core dumps because it avoids calling any Python API routines.  The
latter prints all the local variable values as well as the stack frames but
won't work with core dumps because it relies on _PyObject_Dump to print
variables.
parent 03562a5e
......@@ -43,12 +43,16 @@ define pylocals
end
end
# print the current frame
# print the current frame - verbose
define pyframev
pyframe
pylocals
end
define pyframe
set $__fn = PyString_AsString(co->co_filename)
set $__n = PyString_AsString(co->co_name)
set $__fn = (char *)((PyStringObject *)co->co_filename)->ob_sval
set $__n = (char *)((PyStringObject *)co->co_name)->ob_sval
printf "%s (%d): %s\n", $__fn, f->f_lineno, $__n
pylocals
end
# Here's a somewhat fragile way to print the entire Python stack from gdb.
......@@ -72,3 +76,14 @@ define pystack
end
select-frame 0
end
# print the entire Python call stack - verbose mode
define pystackv
while $pc < Py_Main || $pc > Py_GetArgcArgv
if $pc > PyEval_EvalFrame && $pc < PyEval_EvalCodeEx
pyframev
end
up-silently 1
end
select-frame 0
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment