Commit 1468429e authored by Gregory P. Smith's avatar Gregory P. Smith

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.
........
parent ded5acf3
# -*- ksh -*-
#
# If you use the GNU debugger gdb to debug the Python C runtime, you # 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 # might find some of the following commands useful. Copy this to your
# ~/.gdbinit file and it'll get loaded into gdb automatically when you # ~/.gdbinit file and it'll get loaded into gdb automatically when you
...@@ -11,19 +9,36 @@ ...@@ -11,19 +9,36 @@
# address : 84a7a2c # address : 84a7a2c
# $1 = void # $1 = void
# (gdb) # (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 # Prints a representation of the object to stderr, along with the
# number of reference counts it current has and the hex address the # number of reference counts it current has and the hex address the
# object is allocated at. The argument must be a PyObject* # object is allocated at. The argument must be a PyObject*
define pyo 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 end
# Prints a representation of the object to stderr, along with the # Prints a representation of the object to stderr, along with the
# number of reference counts it current has and the hex address the # number of reference counts it current has and the hex address the
# object is allocated at. The argument must be a PyGC_Head* # object is allocated at. The argument must be a PyGC_Head*
define pyg define pyg
print _PyGC_Dump($arg0) print _PyGC_Dump($arg0)
end end
# print the local variables of the current frame # print the local variables of the current frame
...@@ -34,10 +49,8 @@ define pylocals ...@@ -34,10 +49,8 @@ define pylocals
set $_names = co->co_varnames set $_names = co->co_varnames
set $_name = _PyUnicode_AsString(PyTuple_GetItem($_names, $_i)) set $_name = _PyUnicode_AsString(PyTuple_GetItem($_names, $_i))
printf "%s:\n", $_name printf "%s:\n", $_name
# side effect of calling _PyObject_Dump is to dump the object's py_decref $_name
# info - assigning just prevents gdb from printing the pyo f->f_localsplus[$_i]
# NULL return value
set $_val = _PyObject_Dump(f->f_localsplus[$_i])
end end
set $_i = $_i + 1 set $_i = $_i + 1
end 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