PEP 523 introduced _PyEval_EvalFrameDefault which inlines PyEval_EvalFrameEx on
non-debug shared builds. This breaks the ability to use py-bt, py-up, and
a few other Python-specific gdb integrations.
This patch fixes the problem by only looking for _PyEval_EvalFrameDefault
frames.
test_gdb passes on both a debug and a non-debug build.
Original patch by Bruno "Polaco" Penteado.
* Revert "Add Bruno Penteado to ACKS (#3091)"
This reverts commit f978405b3f.
* Revert "bpo-30983: eval frame rename in pep 0523 broke gdb's python extension (#2803)"
This reverts commit 2e0f4db114.
pep 0523 renames PyEval_EvalFrameEx to _PyEval_EvalFrameDefault while the gdb python extension only looks for PyEval_EvalFrameEx to understand if it is dealing with a frame.
Final effect is that attaching gdb to a python3.6 process doesnt resolve python objects. Eg. py-list and py-bt dont work properly.
This patch fixes that. Tested locally on python3.6
Issue #29259:
* Detect PyCFunction is the current frame, not only in the older frame
* Ignore PyCFunction_Call() since it now calls _PyCFunction_FastCallDict(), and
_PyCFunction_FastCallDict() is already detected
Issue #29259: Write fast path in _PyCFunction_FastCallKeywords() for
METH_FASTCALL, avoid the creation of a temporary dictionary for keyword
arguments.
Cleanup also _PyCFunction_FastCallDict():
* Don't dereference func before checking that it's not NULL
* Move code to raise the "no keyword argument" exception into a new
no_keyword_error label.
Update python-gdb.py for the change.
Frame.is_other_python_frame() now also handles _PyCFunction_FastCallDict()
frames.
Thanks to the new code to handle fast calls, python-gdb.py is now also able to
detect the <built-in id method of module ...> frame.
Issue #26799: Fix python-gdb.py: don't get once C types when the Python code
is loaded, but get C types on demande. The C types can change if
python-gdb.py is loaded before the Python executable.
Patch written by Thomas Ilsche.
This changes the main documentation, doc strings, source code comments, and a
couple error messages in the test suite. In some cases the word was removed
or edited some other way to fix the grammar.
requires them. Disable executable bits and shebang lines in test and
benchmark files in order to prevent using a random system python, and in
source files of modules which don't provide command line interface. Fixed
shebang lines in the unittestgui and checkpip scripts.
requires them. Disable executable bits and shebang lines in test and
benchmark files in order to prevent using a random system python, and in
source files of modules which don't provide command line interface. Fixed
shebang line to use python3 executable in the unittestgui script.
display invalid strings. Such strings can be found while Python is creating a
new string, in a text decoder for example, when Python is compiled in debug
mode.
The gdb hooks for debugging CPython (within Tools/gdb) have
been enhanced to show information on more C frames relevant to CPython within
the "py-bt" and "py-bt-full" commands:
* C frames that are waiting on the GIL
* C frames that are garbage-collecting
* C frames that are due to the invocation of a PyCFunction
the Python traceback if Python is optimized.
* delay the lookup of the size_t type, it is not available at startup
* The second argument of the PyFrameObjectPtr constructor is optional, as
done in other constructors
* iter_builtins() and iter_globals() methods of PyFrameObjectPtr returns
an empty tuple instead of None if Python is optimized
* Fix py-bt and py-bt-full to handle correctly "optimized" frames
* Frame.get_pyop() tries to get the frame pointer from PyEval_EvalCodeEx()
if the pointer is optimized out in PyEval_EvalFrameEx()
traceback if Python is optimized.
* delay the lookup of the size_t type, it is not available at startup
* The second argument of the PyFrameObjectPtr constructor is optional, as
done in other constructors
* iter_builtins() and iter_globals() methods of PyFrameObjectPtr returns
an empty tuple instead of None if Python is optimized
* Fix py-bt and py-bt-full to handle correctly "optimized" frames
* Frame.get_pyop() tries to get the frame pointer from PyEval_EvalCodeEx()
if the pointer is optimized out in PyEval_EvalFrameEx()
Encode unicode strings to the terminal encoding with backslashreplace error (as
Python does for sys.stderr) before writing them to sys.stdout. It fixes
UnicodeEncodeError on writing non-ascii characters in an ascii terminal (C
locale: ASCII encoding).
* Escape non printable characters (use locale.getpreferredencoding())
* Fix support of surrogate pairs
* test_gdb.py: use ascii() instead of repr() in gdb program arguments to avoid
encoding issues
* Fix test_strings() of test_gdb.py for encoding different than UTF-8
(eg. ACSII)
svn+ssh://pythondev@svn.python.org/python/trunk
........
r79548 | martin.v.loewis | 2010-04-01 02:40:51 -0500 (Thu, 01 Apr 2010) | 3 lines
Issue #8032: For gdb7, a python-gdb.py file is added to the build,
allowing to use advanced gdb features when debugging Python.
........
r79557 | antoine.pitrou | 2010-04-01 12:56:57 -0500 (Thu, 01 Apr 2010) | 5 lines
Issue #8281: rename test_gdb_sample.py to gdb_sample.py, otherwise it gets picked
as a regular test by regrtest.py, and fails.
........
r79616 | mark.dickinson | 2010-04-02 15:22:21 -0500 (Fri, 02 Apr 2010) | 1 line
Add python.exe-gdb.py to svn:ignore, for the benefit of OS X developers.
........
r79617 | mark.dickinson | 2010-04-02 15:34:26 -0500 (Fri, 02 Apr 2010) | 1 line
Add python-gdb.py and python.exe-gdb.py to distclean target in Makefile.
........
r79716 | martin.v.loewis | 2010-04-03 13:54:07 -0500 (Sat, 03 Apr 2010) | 2 lines
Don't install python-gdb.py as an executable.
........
r79778 | r.david.murray | 2010-04-04 20:34:50 -0500 (Sun, 04 Apr 2010) | 3 lines
Issue 8287: try to fix the gdb-python install errors on Solaris
and FreeBSD. Patch by Dave Malcolm.
........
r79795 | ronald.oussoren | 2010-04-05 06:21:21 -0500 (Mon, 05 Apr 2010) | 7 lines
Ensure that the gdb hooks can be installed when
srcdir != builddir.
Without this patch it is no longer possible to
build python when you don't run configure from
the root of the source tree.
........
r79803 | r.david.murray | 2010-04-05 11:28:49 -0500 (Mon, 05 Apr 2010) | 3 lines
Issue 8316: make test_gdb robust in the face of differing terminal
widths. Patch by Dave Malcolm.
........
r79896 | martin.v.loewis | 2010-04-07 14:11:32 -0500 (Wed, 07 Apr 2010) | 2 lines
Issue #8337: Disable the remaining test also for now.
........