summaryrefslogtreecommitdiff
path: root/Misc/gdbinit
diff options
context:
space:
mode:
authorGregory P. Smith <greg@mad-scientist.com>2010-10-17 18:47:43 +0000
committerGregory P. Smith <greg@mad-scientist.com>2010-10-17 18:47:43 +0000
commitdcb411b8b675fab3adeaefd4596c7573d0c548c1 (patch)
treec353a829258d5440921db96a8ec4d98a2be010cf /Misc/gdbinit
parent9855ddf405dd405e49dd7553810be6d5f2163db6 (diff)
downloadcpython-git-dcb411b8b675fab3adeaefd4596c7573d0c548c1.tar.gz
Merged revisions 85646 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r85646 | gregory.p.smith | 2010-10-17 11:38:04 -0700 (Sun, 17 Oct 2010) | 6 lines * Applys part of the patch from http://bugs.python.org/issue3631 to add a py_decref macro, fixup the pyo macro and reuse it and avoid a memory leak introduced by the pylocals macro. * Adds a note about gdb 7 python debugging support with links for more info on that. ........
Diffstat (limited to 'Misc/gdbinit')
-rw-r--r--Misc/gdbinit29
1 files changed, 21 insertions, 8 deletions
diff --git a/Misc/gdbinit b/Misc/gdbinit
index 4400ba4bdf..a5be5df978 100644
--- a/Misc/gdbinit
+++ b/Misc/gdbinit
@@ -1,5 +1,3 @@
-# -*- ksh -*-
-#
# If you use the GNU debugger gdb to debug the Python C runtime, you
# might find some of the following commands useful. Copy this to your
# ~/.gdbinit file and it'll get loaded into gdb automatically when you
@@ -11,19 +9,36 @@
# address : 84a7a2c
# $1 = void
# (gdb)
+#
+# NOTE: If you have gdb 7 or later, it supports debugging of Python directly
+# with embedded macros that you may find superior to what is in here.
+# See https://fedoraproject.org/wiki/Features/EasierPythonDebugging
+# and http://bugs.python.org/issue8032 for more gdb 7 python information.
+
+# gdb version of Py_DECREF(obj) macro
+define py_decref
+ set $__obj = $arg0
+ set $__obj->ob_refcnt -= 1
+ if ($__obj->ob_refcnt == 0)
+ set $__obj = _Py_Dealloc($__obj)
+ end
+end
# Prints a representation of the object to stderr, along with the
# number of reference counts it current has and the hex address the
# object is allocated at. The argument must be a PyObject*
define pyo
-print _PyObject_Dump($arg0)
+ # side effect of calling _PyObject_Dump is to dump the object's
+ # info - assigning just prevents gdb from printing the
+ # NULL return value
+ set $_unused_void = _PyObject_Dump($arg0)
end
# Prints a representation of the object to stderr, along with the
# number of reference counts it current has and the hex address the
# object is allocated at. The argument must be a PyGC_Head*
define pyg
-print _PyGC_Dump($arg0)
+ print _PyGC_Dump($arg0)
end
# print the local variables of the current frame
@@ -34,10 +49,8 @@ define pylocals
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])
+ py_decref $_name
+ pyo f->f_localsplus[$_i]
end
set $_i = $_i + 1
end