2001-01-23 17:25:19 +01:00
|
|
|
# -*- 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
|
|
|
|
# start it up. Then, at the gdb prompt you can do things like:
|
|
|
|
#
|
|
|
|
# (gdb) pyo apyobjectptr
|
|
|
|
# <module 'foobar' (built-in)>
|
|
|
|
# refcounts: 1
|
|
|
|
# address : 84a7a2c
|
|
|
|
# $1 = void
|
|
|
|
# (gdb)
|
|
|
|
|
|
|
|
# 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
|
2001-01-24 05:18:13 +01:00
|
|
|
print _PyObject_Dump($arg0)
|
2001-01-23 17:25:19 +01:00
|
|
|
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
|
2001-01-24 05:18:13 +01:00
|
|
|
print _PyGC_Dump($arg0)
|
2001-01-23 17:25:19 +01:00
|
|
|
end
|
2003-10-03 22:56:15 +02:00
|
|
|
|
2004-04-02 16:51:13 +02:00
|
|
|
# print the local variables of the current frame
|
|
|
|
define pylocals
|
|
|
|
set $_i = 0
|
Merged revisions 73941-73943,74076,74094,74186,74211-74214,74247,74254,74262,74311,74334,74368 via svnmerge from
svn+ssh://svn.python.org/python/branches/py3k
................
r73941 | georg.brandl | 2009-07-11 12:39:00 +0200 (Sa, 11 Jul 2009) | 9 lines
Merged revisions 73940 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r73940 | georg.brandl | 2009-07-11 12:37:38 +0200 (Sa, 11 Jul 2009) | 1 line
#6430: add note about size of "u" type.
........
................
r73942 | georg.brandl | 2009-07-11 12:39:23 +0200 (Sa, 11 Jul 2009) | 1 line
#6430: remove mention of "w" array typecode.
................
r73943 | georg.brandl | 2009-07-11 12:43:08 +0200 (Sa, 11 Jul 2009) | 1 line
#6421: The self argument of module-level PyCFunctions is now a reference to the module object.
................
r74076 | georg.brandl | 2009-07-18 11:07:48 +0200 (Sa, 18 Jul 2009) | 1 line
#6502: add missing comma in docstring.
................
r74094 | georg.brandl | 2009-07-19 09:25:56 +0200 (So, 19 Jul 2009) | 10 lines
Recorded merge of revisions 74089 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r74089 | senthil.kumaran | 2009-07-19 04:43:43 +0200 (So, 19 Jul 2009) | 3 lines
Fix for issue5102, timeout value propages between redirects, proxy, digest and
auth handlers. Fixed tests to reflect the same.
........
................
r74186 | georg.brandl | 2009-07-23 11:19:09 +0200 (Do, 23 Jul 2009) | 9 lines
Recorded merge of revisions 74185 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r74185 | georg.brandl | 2009-07-23 11:17:09 +0200 (Do, 23 Jul 2009) | 1 line
Fix the "pylocals" gdb command.
........
................
r74211 | georg.brandl | 2009-07-26 16:48:09 +0200 (So, 26 Jul 2009) | 9 lines
Recorded merge of revisions 74210 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r74210 | georg.brandl | 2009-07-26 16:44:23 +0200 (So, 26 Jul 2009) | 1 line
Move member descriptions inside the classes.
........
................
r74212 | georg.brandl | 2009-07-26 16:54:51 +0200 (So, 26 Jul 2009) | 9 lines
Merged revisions 74209 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r74209 | georg.brandl | 2009-07-26 16:37:28 +0200 (So, 26 Jul 2009) | 1 line
builtin -> built-in.
........
................
r74213 | georg.brandl | 2009-07-26 17:02:41 +0200 (So, 26 Jul 2009) | 9 lines
Merged revisions 74207 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r74207 | georg.brandl | 2009-07-26 16:19:57 +0200 (So, 26 Jul 2009) | 1 line
#6577: fix (hopefully) all links to builtin instead of module/class-specific objects.
........
................
r74214 | georg.brandl | 2009-07-26 17:03:49 +0200 (So, 26 Jul 2009) | 9 lines
Merged revisions 74205 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r74205 | georg.brandl | 2009-07-26 15:36:39 +0200 (So, 26 Jul 2009) | 1 line
#6576: fix cross-refs in re docs.
........
................
r74247 | georg.brandl | 2009-07-29 09:27:08 +0200 (Mi, 29 Jul 2009) | 9 lines
Merged revisions 74239 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r74239 | georg.brandl | 2009-07-28 18:55:32 +0000 (Di, 28 Jul 2009) | 1 line
Clarify quote_plus() usage.
........
................
r74254 | georg.brandl | 2009-07-29 18:14:16 +0200 (Mi, 29 Jul 2009) | 1 line
#6586: fix return/argument type doc for os.read() and os.write().
................
r74262 | alexandre.vassalotti | 2009-07-29 21:54:39 +0200 (Mi, 29 Jul 2009) | 57 lines
Merged revisions 74074,74077,74111,74188,74192-74193,74200,74252-74253,74258-74261 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r74074 | georg.brandl | 2009-07-18 05:03:10 -0400 (Sat, 18 Jul 2009) | 1 line
#6513: fix example code: warning categories are classes, not instances.
........
r74077 | georg.brandl | 2009-07-18 05:43:40 -0400 (Sat, 18 Jul 2009) | 1 line
#6489: fix an ambiguity in getiterator() documentation.
........
r74111 | benjamin.peterson | 2009-07-20 09:30:10 -0400 (Mon, 20 Jul 2009) | 1 line
remove docs for deprecated -p option
........
r74188 | benjamin.peterson | 2009-07-23 10:25:31 -0400 (Thu, 23 Jul 2009) | 1 line
use bools
........
r74192 | georg.brandl | 2009-07-24 12:28:38 -0400 (Fri, 24 Jul 2009) | 1 line
Fix arg types of et#.
........
r74193 | georg.brandl | 2009-07-24 12:46:38 -0400 (Fri, 24 Jul 2009) | 1 line
Dont put "void" in signature for nullary functions.
........
r74200 | georg.brandl | 2009-07-25 09:02:15 -0400 (Sat, 25 Jul 2009) | 1 line
#6571: add index entries for more operators.
........
r74252 | georg.brandl | 2009-07-29 12:06:31 -0400 (Wed, 29 Jul 2009) | 1 line
#6593: fix link targets.
........
r74253 | georg.brandl | 2009-07-29 12:09:17 -0400 (Wed, 29 Jul 2009) | 1 line
#6591: add reference to ioctl in fcntl module for platforms other than Windows.
........
r74258 | georg.brandl | 2009-07-29 12:57:05 -0400 (Wed, 29 Jul 2009) | 1 line
Add a link to readline, and mention IPython and bpython.
........
r74259 | georg.brandl | 2009-07-29 13:07:21 -0400 (Wed, 29 Jul 2009) | 1 line
Fix some markup and small factual glitches found by M. Markert.
........
r74260 | georg.brandl | 2009-07-29 13:15:20 -0400 (Wed, 29 Jul 2009) | 1 line
Fix a few markup glitches.
........
r74261 | georg.brandl | 2009-07-29 13:50:25 -0400 (Wed, 29 Jul 2009) | 1 line
Rewrite the section about classes a bit; mostly tidbits, and a larger update to the section about "private" variables to reflect the Pythonic consensus better.
........
................
r74311 | georg.brandl | 2009-08-04 22:29:27 +0200 (Di, 04 Aug 2009) | 1 line
Slightly improve buffer-related error message.
................
r74334 | georg.brandl | 2009-08-06 19:51:03 +0200 (Do, 06 Aug 2009) | 1 line
#6648: mention surrogateescape handler where all standard handlers are listed.
................
r74368 | georg.brandl | 2009-08-13 09:56:35 +0200 (Do, 13 Aug 2009) | 21 lines
Merged revisions 74328,74332-74333,74365 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r74328 | georg.brandl | 2009-08-06 17:06:25 +0200 (Do, 06 Aug 2009) | 1 line
Fix base keyword arg name for int() and long().
........
r74332 | georg.brandl | 2009-08-06 19:23:21 +0200 (Do, 06 Aug 2009) | 1 line
Fix punctuation and one copy-paste error.
........
r74333 | georg.brandl | 2009-08-06 19:43:55 +0200 (Do, 06 Aug 2009) | 1 line
#6658: fix two typos.
........
r74365 | georg.brandl | 2009-08-13 09:48:05 +0200 (Do, 13 Aug 2009) | 1 line
#6679: Remove mention that sub supports no flags.
........
................
2009-08-13 10:26:44 +02:00
|
|
|
while $_i < f->f_code->co_nlocals
|
2004-04-02 16:51:13 +02:00
|
|
|
if f->f_localsplus + $_i != 0
|
|
|
|
set $_names = co->co_varnames
|
2008-08-24 22:59:23 +02:00
|
|
|
set $_name = _PyUnicode_AsString(PyTuple_GetItem($_names, $_i))
|
2004-04-02 16:51:13 +02:00
|
|
|
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
|
|
|
|
|
2005-01-08 22:56:43 +01:00
|
|
|
# A rewrite of the Python interpreter's line number calculator in GDB's
|
|
|
|
# command language
|
|
|
|
define lineno
|
2005-09-05 18:16:49 +02:00
|
|
|
set $__continue = 1
|
2005-01-08 22:56:43 +01:00
|
|
|
set $__co = f->f_code
|
|
|
|
set $__lasti = f->f_lasti
|
2007-08-27 04:49:29 +02:00
|
|
|
set $__sz = ((PyVarObject *)$__co->co_lnotab)->ob_size/2
|
2008-08-24 22:59:23 +02:00
|
|
|
set $__p = (unsigned char *)((PyBytesObject *)$__co->co_lnotab)->ob_sval
|
2005-01-08 22:56:43 +01:00
|
|
|
set $__li = $__co->co_firstlineno
|
|
|
|
set $__ad = 0
|
2005-09-05 18:16:49 +02:00
|
|
|
while ($__sz-1 >= 0 && $__continue)
|
2005-01-08 22:56:43 +01:00
|
|
|
set $__sz = $__sz - 1
|
|
|
|
set $__ad = $__ad + *$__p
|
|
|
|
set $__p = $__p + 1
|
|
|
|
if ($__ad > $__lasti)
|
2005-09-05 18:16:49 +02:00
|
|
|
set $__continue = 0
|
2005-01-08 22:56:43 +01:00
|
|
|
end
|
|
|
|
set $__li = $__li + *$__p
|
|
|
|
set $__p = $__p + 1
|
|
|
|
end
|
|
|
|
printf "%d", $__li
|
|
|
|
end
|
|
|
|
|
2004-11-17 17:04:15 +01:00
|
|
|
# print the current frame - verbose
|
|
|
|
define pyframev
|
|
|
|
pyframe
|
|
|
|
pylocals
|
|
|
|
end
|
|
|
|
|
2004-04-02 16:51:13 +02:00
|
|
|
define pyframe
|
2008-08-24 22:59:23 +02:00
|
|
|
set $__fn = _PyUnicode_AsString(co->co_filename)
|
|
|
|
set $__n = _PyUnicode_AsString(co->co_name)
|
2005-01-08 22:56:43 +01:00
|
|
|
printf "%s (", $__fn
|
|
|
|
lineno
|
|
|
|
printf "): %s\n", $__n
|
|
|
|
### Uncomment these lines when using from within Emacs/XEmacs so it will
|
|
|
|
### automatically track/display the current Python source line
|
|
|
|
# printf "%c%c%s:", 032, 032, $__fn
|
|
|
|
# lineno
|
|
|
|
# printf ":1\n"
|
|
|
|
end
|
|
|
|
|
|
|
|
### Use these at your own risk. It appears that a bug in gdb causes it
|
|
|
|
### to crash in certain circumstances.
|
|
|
|
|
|
|
|
#define up
|
|
|
|
# up-silently 1
|
|
|
|
# printframe
|
|
|
|
#end
|
|
|
|
|
|
|
|
#define down
|
|
|
|
# down-silently 1
|
|
|
|
# printframe
|
|
|
|
#end
|
|
|
|
|
|
|
|
define printframe
|
2005-08-13 02:28:41 +02:00
|
|
|
if $pc > PyEval_EvalFrameEx && $pc < PyEval_EvalCodeEx
|
2005-01-08 22:56:43 +01:00
|
|
|
pyframe
|
|
|
|
else
|
|
|
|
frame
|
|
|
|
end
|
2004-04-02 16:51:13 +02:00
|
|
|
end
|
|
|
|
|
2004-04-02 16:53:55 +02:00
|
|
|
# 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
|
2005-01-08 22:56:43 +01:00
|
|
|
# statement tests to see if we are in PyEval_EvalFrame().
|
2004-04-02 16:53:55 +02:00
|
|
|
|
2004-04-02 16:51:13 +02:00
|
|
|
# print the entire Python call stack
|
|
|
|
define pystack
|
|
|
|
while $pc < Py_Main || $pc > Py_GetArgcArgv
|
2004-08-07 22:11:22 +02:00
|
|
|
if $pc > PyEval_EvalFrame && $pc < PyEval_EvalCodeEx
|
2004-04-02 16:51:13 +02:00
|
|
|
pyframe
|
|
|
|
end
|
|
|
|
up-silently 1
|
|
|
|
end
|
|
|
|
select-frame 0
|
|
|
|
end
|
2004-11-17 17:04:15 +01:00
|
|
|
|
|
|
|
# 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
|
Merged revisions 70912,70944,70968,71033,71041,71208,71263,71286,71395-71396,71405-71406,71485,71492,71494 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r70912 | georg.brandl | 2009-03-31 17:35:46 -0500 (Tue, 31 Mar 2009) | 1 line
#5617: add a handy function to print a unicode string to gdbinit.
........
r70944 | georg.brandl | 2009-03-31 23:32:39 -0500 (Tue, 31 Mar 2009) | 1 line
#5631: add upload to list of possible commands, which is presented in --help-commands.
........
r70968 | michael.foord | 2009-04-01 13:25:38 -0500 (Wed, 01 Apr 2009) | 1 line
Adding Wing project file
........
r71033 | brett.cannon | 2009-04-01 22:34:53 -0500 (Wed, 01 Apr 2009) | 3 lines
Fix two issues introduced by issue #71031 by changing the signature of
PyImport_AppendInittab() to take a const char *.
........
r71041 | jesse.noller | 2009-04-02 00:17:26 -0500 (Thu, 02 Apr 2009) | 1 line
Add custom initializer argument to multiprocess.Manager*, courtesy of lekma
........
r71208 | michael.foord | 2009-04-04 20:15:01 -0500 (Sat, 04 Apr 2009) | 4 lines
Change the way unittest.TestSuite use their tests to always access them through iteration. Non behavior changing, this allows you to create custom subclasses that override __iter__.
Issue #5693
........
r71263 | michael.foord | 2009-04-05 14:19:28 -0500 (Sun, 05 Apr 2009) | 4 lines
Adding assertIs and assertIsNot methods to unittest.TestCase
Issue #2578
........
r71286 | tarek.ziade | 2009-04-05 17:04:38 -0500 (Sun, 05 Apr 2009) | 1 line
added a simplest test to distutils.spawn._nt_quote_args
........
r71395 | benjamin.peterson | 2009-04-08 08:27:29 -0500 (Wed, 08 Apr 2009) | 1 line
these must be installed to correctly run tests
........
r71396 | benjamin.peterson | 2009-04-08 08:29:41 -0500 (Wed, 08 Apr 2009) | 1 line
fix syntax
........
r71405 | andrew.kuchling | 2009-04-09 06:22:47 -0500 (Thu, 09 Apr 2009) | 1 line
Add items
........
r71406 | andrew.kuchling | 2009-04-09 06:23:36 -0500 (Thu, 09 Apr 2009) | 1 line
Typo fixes
........
r71485 | andrew.kuchling | 2009-04-11 11:12:23 -0500 (Sat, 11 Apr 2009) | 1 line
Add various items
........
r71492 | georg.brandl | 2009-04-11 13:19:27 -0500 (Sat, 11 Apr 2009) | 1 line
Take credit for a patch of mine.
........
r71494 | benjamin.peterson | 2009-04-11 14:31:00 -0500 (Sat, 11 Apr 2009) | 1 line
ignore py3_test_grammar when compiling the library
........
2009-04-11 22:45:40 +02:00
|
|
|
|
|
|
|
# generally useful macro to print a Unicode string
|
|
|
|
def pu
|
|
|
|
set $uni = $arg0
|
|
|
|
set $i = 0
|
|
|
|
while (*$uni && $i++<100)
|
|
|
|
if (*$uni < 0x80)
|
|
|
|
print *(char*)$uni++
|
|
|
|
else
|
|
|
|
print /x *(short*)$uni++
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|