diff options
author | Skip Montanaro <skip@pobox.com> | 2004-04-02 14:53:55 (GMT) |
---|---|---|
committer | Skip Montanaro <skip@pobox.com> | 2004-04-02 14:53:55 (GMT) |
commit | 7a92d74c5204cda80d28684542e396be3fd54026 (patch) | |
tree | 1693d98e31a597ec7cbdcc3d29aaff0690a3f65a /Misc | |
parent | 74d07f2bfa32700d6bcf37fd2465c7b88054e970 (diff) | |
download | cpython-7a92d74c5204cda80d28684542e396be3fd54026.zip cpython-7a92d74c5204cda80d28684542e396be3fd54026.tar.gz cpython-7a92d74c5204cda80d28684542e396be3fd54026.tar.bz2 |
It would help if I deleted the old pystack!
Also, move pystack comment down next to it
Diffstat (limited to 'Misc')
-rw-r--r-- | Misc/gdbinit | 34 |
1 files changed, 11 insertions, 23 deletions
diff --git a/Misc/gdbinit b/Misc/gdbinit index 05b2612..b3b4946 100644 --- a/Misc/gdbinit +++ b/Misc/gdbinit @@ -26,17 +26,6 @@ define pyg print _PyGC_Dump($arg0) 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 -# of specific functions in the C source code. - -# Explanation of while and if tests: We want to pop up the stack until we -# land in Py_Main (this is probably an incorrect assumption in an embedded -# interpreter, but the test can be extended by an interested party). If -# Py_Main <= $pc <= Py_GetArgcArv is true $pc is in Py_Main(), so the while -# tests succeeds as long as it's not true. In a similar fashion the if -# statement tests to see if we are in eval_frame(). - # print the local variables of the current frame define pylocals set $_i = 0 @@ -62,6 +51,17 @@ define pyframe pylocals 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 +# of specific functions in the C source code. + +# Explanation of while and if tests: We want to pop up the stack until we +# land in Py_Main (this is probably an incorrect assumption in an embedded +# interpreter, but the test can be extended by an interested party). If +# Py_Main <= $pc <= Py_GetArgcArv is true, $pc is in Py_Main(), so the while +# tests succeeds as long as it's not true. In a similar fashion the if +# statement tests to see if we are in eval_frame(). + # print the entire Python call stack define pystack while $pc < Py_Main || $pc > Py_GetArgcArgv @@ -72,15 +72,3 @@ define pystack end select-frame 0 end - -define pystack - 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 |