[Python-checkins] gh-102809: Remove `Misc/gdbinit` (#102854)
gpshead
webhook-mailer at python.org
Mon Mar 20 19:30:53 EDT 2023
https://github.com/python/cpython/commit/ef000eb3e2a8d0ecd51b6d44b390fefd820a61a6
commit: ef000eb3e2a8d0ecd51b6d44b390fefd820a61a6
branch: main
author: Nikita Sobolev <mail at sobolevn.me>
committer: gpshead <greg at krypto.org>
date: 2023-03-20T16:30:46-07:00
summary:
gh-102809: Remove `Misc/gdbinit` (#102854)
Looks like the consensus is that we don't need this file anymore.
Old version can be always found here: https://github.com/python/cpython/blob/094cf392f49d3c16fe798863717f6c8e0f3734bb/Misc/gdbinit
files:
A Misc/NEWS.d/next/Tools-Demos/2023-03-21-01-27-07.gh-issue-102809.2F1Byz.rst
D Misc/gdbinit
diff --git a/Misc/NEWS.d/next/Tools-Demos/2023-03-21-01-27-07.gh-issue-102809.2F1Byz.rst b/Misc/NEWS.d/next/Tools-Demos/2023-03-21-01-27-07.gh-issue-102809.2F1Byz.rst
new file mode 100644
index 000000000000..5c2827698785
--- /dev/null
+++ b/Misc/NEWS.d/next/Tools-Demos/2023-03-21-01-27-07.gh-issue-102809.2F1Byz.rst
@@ -0,0 +1 @@
+``Misc/gdbinit`` was removed.
diff --git a/Misc/gdbinit b/Misc/gdbinit
deleted file mode 100644
index e8f62ba64764..000000000000
--- a/Misc/gdbinit
+++ /dev/null
@@ -1,176 +0,0 @@
-# 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)
-#
-# 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 Tools/gdb/libpython.py and http://bugs.python.org/issue8032.
-
-define pyo
- # 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
-document pyo
- Prints a representation of the object to stderr, along with the
- number of reference counts it currently has and the hex address the
- object is allocated at. The argument must be a PyObject*
-end
-
-define pyg
- print _PyGC_Dump($arg0)
-end
-document pyg
- Prints a representation of the object to stderr, along with the
- number of reference counts it currently has and the hex address the
- object is allocated at. The argument must be a PyGC_Head*
-end
-
-define pylocals
- set $_i = 0
- while $_i < f->f_code->co_nlocals
- if f->f_localsplus + $_i != 0
- set $_names = f->f_code->co_varnames
- set $_name = PyUnicode_AsUTF8(PyTuple_GetItem($_names, $_i))
- printf "%s:\n", $_name
- pyo f->f_localsplus[$_i]
- end
- set $_i = $_i + 1
- end
-end
-document pylocals
- Print the local variables of the current frame.
-end
-
-# A rewrite of the Python interpreter's line number calculator in GDB's
-# command language
-define lineno
- set $__continue = 1
- set $__co = f->f_code
- set $__lasti = f->f_lasti
- set $__sz = ((PyVarObject *)$__co->co_lnotab)->ob_size/2
- set $__p = (unsigned char *)((PyBytesObject *)$__co->co_lnotab)->ob_sval
- set $__li = $__co->co_firstlineno
- set $__ad = 0
- while ($__sz-1 >= 0 && $__continue)
- set $__sz = $__sz - 1
- set $__ad = $__ad + *$__p
- set $__p = $__p + 1
- if ($__ad > $__lasti)
- set $__continue = 0
- else
- set $__li = $__li + *$__p
- set $__p = $__p + 1
- end
- end
- printf "%d", $__li
-end
-
-define pyframev
- pyframe
- pylocals
-end
-document pyframev
- Print the current frame - verbose
-end
-
-define pyframe
- set $__fn = PyUnicode_AsUTF8(f->f_code->co_filename)
- set $__n = PyUnicode_AsUTF8(f->f_code->co_name)
- 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
- if $pc > PyEval_EvalFrameEx && $pc < _PyEval_EvalFrameDefault
- pyframe
- else
- frame
- end
-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 PyEval_EvalFrameEx().
-
-# Note: The name of the main interpreter function and the function which
-# follow it has changed over time. This version of pystack works with this
-# version of Python. If you try using it with older or newer versions of
-# the interpreter you may will have to change the functions you compare with
-# $pc.
-
-define pystack
- while $pc < Py_Main || $pc > Py_GetArgcArgv
- if $pc > PyEval_EvalFrameEx && $pc < _PyEval_EvalFrameDefault
- pyframe
- end
- up-silently 1
- end
- select-frame 0
-end
-document pystack
- Print the entire Python call stack
-end
-
-define pystackv
- while $pc < Py_Main || $pc > Py_GetArgcArgv
- if $pc > PyEval_EvalFrameEx && $pc < _PyEval_EvalFrameDefault
- pyframev
- end
- up-silently 1
- end
- select-frame 0
-end
-document pystackv
- Print the entire Python call stack - verbose mode
-end
-
-define 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
-document pu
- Generally useful macro to print a Unicode string
-end
More information about the Python-checkins
mailing list