Commit Graph

118 Commits

Author SHA1 Message Date
Lisa Roach 1ceb3a3d17
bpo-35132: Fixes missing target in gdb pep0393 check. (GH-11848) 2019-03-11 20:21:25 -07:00
Victor Stinner 2e438cc255
bpo-34989: python-gdb.py: fix current_line_num() (GH-9889)
python-gdb.py now handles errors on computing the line number
of a Python frame.

Changes:

* PyFrameObjectPtr.current_line_num() now catchs any Exception on
  calling addr2line(), instead of failing with a surprising "<class
  'TypeError'> 'FakeRepr' object is not subscriptable" error.
* All callers of current_line_num() now handle current_line_num()
  returning None.
* PyFrameObjectPtr.current_line() now also catchs IndexError on
  getting a line from the Python source file.
2018-10-15 23:19:57 +02:00
Victor Stinner d22fc0bc7d
bpo-32962: python-gdb catchs UnicodeDecodeError (GH-7693)
python-gdb now catchs UnicodeDecodeError exceptions when calling
string().
2018-06-14 22:34:52 +02:00
Victor Stinner 019d33b7a4
bpo-32962: python-gdb catchs ValueError on read_var() (GH-7692)
python-gdb now catchs ValueError on read_var(): when Python has no
debug symbols for example.
2018-06-14 16:28:07 +02:00
Gregory P. Smith 53f67d401d
bpo-33312: update Tools/gdb/libpython.py to match. (GH-6548) 2018-04-20 11:32:08 -07:00
Łukasz Langa 5fe59f8e3a bpo-30983: [gdb] Fix py-bt, etc. for non-debug shared builds (#3153)
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.
2017-08-21 16:40:29 -07:00
Victor Stinner 7cc33998b8 bpo-30983: Revert changes which broke most buildbots (#3100)
* 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.
2017-08-16 11:02:05 +02:00
Bruno "Polaco" Penteado 2e0f4db114 bpo-30983: eval frame rename in pep 0523 broke gdb's python extension (#2803)
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
2017-08-14 15:14:17 -07:00
Jon Dufresne 3972628de3 bpo-30296 Remove unnecessary tuples, lists, sets, and dicts (#1489)
* Replaced list(<generator expression>) with list comprehension
* Replaced dict(<generator expression>) with dict comprehension
* Replaced set(<list literal>) with set literal
* Replaced builtin func(<list comprehension>) with func(<generator
  expression>) when supported (e.g. any(), all(), tuple(), min(), &
  max())
2017-05-18 07:35:54 -07:00
Lev Abalkin 661ca8843f Fixes bpo-29680: Older gdb does not have gdb.error. (#363)
This change is required to make python-dbg.py compatible with GDB versions before 7.3.
2017-03-01 13:16:23 -05:00
INADA Naoki 5566bbb8d5 Issue #29263: LOAD_METHOD support for C methods
Calling builtin method is at most 10% faster.
2017-02-03 07:43:03 +09:00
Victor Stinner 611083331d python-gdb.py supports method-wrapper
Issue #29367: python-gdb.py now supports also method-wrapper (wrapperobject)
objects.
2017-02-01 16:29:54 +01:00
Victor Stinner fa025f112f Update and enhance python-gdb.py
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
2017-01-18 17:20:01 +01:00
Victor Stinner 7612f1e36a Fix Python 2.6 support in python-gdb.py
Issue #29259.
2017-01-18 13:49:43 +01:00
Victor Stinner 7fc252adfb Optimize _PyCFunction_FastCallKeywords()
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.
2017-01-16 17:18:53 +01:00
Victor Stinner cb5fe9c22c Merge 3.5 2016-12-16 10:00:53 +01:00
Victor Stinner 610f5d739d python-gdb.py: catch gdb.error on gdb.selected_frame() 2016-12-16 10:00:39 +01:00
Victor Stinner eae64fda5b Issue #28770: Update python-gdb.py for fastcalls
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.
2016-11-22 22:53:18 +01:00
Victor Stinner 3a5d79fbc8 Issue #28023: Fix python-gdb.py on old GDB versions
Replace int(value.address)+offset with value.cast(unsigned char*)+offset.

It seems like int(value.address) fails on old versions of GDB.
2016-11-22 13:09:39 +01:00
INADA Naoki d7d2bc8798 Issue #28023: Fix python-gdb.py didn't support new dict implementation 2016-11-22 19:40:58 +09:00
Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D) a68c1bca7b Remove legacy "from __future__ import with_statement" lines. 2016-09-08 13:47:41 -07:00
Victor Stinner 19620c57d7 gdb/libpython.py: inline _type_void_ptr()
The function was only called in _sizeof_void_p()
2016-04-20 18:26:12 +02:00
Victor Stinner 4e75ca87e3 python-gdb.py: get C types at runtime
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.
2016-04-20 18:07:21 +02:00
Martin Panter 7462b64911 Issue #25523: Correct "a" article to "an" article
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.
2015-11-02 03:37:02 +00:00
Serhiy Storchaka 8f8ec92de8 Issue #19936: Added executable bits or shebang lines to Python scripts which
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.
2014-01-16 17:33:23 +02:00
Serhiy Storchaka b992a0e102 Issue #19936: Added executable bits or shebang lines to Python scripts which
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.
2014-01-16 17:15:49 +02:00
Antoine Pitrou 59b7ff2d43 Undo (hopefully) buildbot failures 2013-11-23 18:22:02 +01:00
Antoine Pitrou 23828f6d8e Undo (hopefully) buildbot failures 2013-11-23 18:20:42 +01:00
Antoine Pitrou b17d2aa552 Issue #19308: fix the gdb plugin on gdbs linked with Python 3 2013-11-23 17:40:36 +01:00
Antoine Pitrou e50240c504 Issue #19308: fix the gdb plugin on gdbs linked with Python 3 2013-11-23 17:40:36 +01:00
Serhiy Storchaka 48e6a8c88a Issue #18743: Fix references to non-existant "StringIO" module
in docstrings and comments.
2013-08-29 11:39:48 +03:00
Serhiy Storchaka 50254c57cd Issue #18743: Fix references to non-existant "StringIO" module
in docstrings and comments.
2013-08-29 11:35:43 +03:00
Ezio Melotti d640fe2af5 #18803: merge with 3.3. 2013-08-26 01:33:30 +03:00
Ezio Melotti 7c4a7e6f3c #18803: fix more typos. Patch by Févry Thibault. 2013-08-26 01:32:56 +03:00
Antoine Pitrou 9d95254bb7 Issue #18772: fix the gdb plugin after the set implementation changes 2013-08-24 21:07:07 +02:00
David Malcolm 1df37c657d #17833: merge with 3.3 2013-05-06 14:51:13 -04:00
David Malcolm d08b210164 #17833: fix test_gdb failures seen on PPC64 Linux in test_threads (test.test_gdb.PyBtTests) 2013-05-06 14:47:15 -04:00
Victor Stinner d8a5cc91e6 python-gdb.py: Replace invalid Unicode character with U+FFFD to be able to
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.
2013-04-11 21:37:45 +02:00
Ezio Melotti 3f5db3940f Fix a few typos and a double semicolon. Patch by Eitan Adler. 2013-01-27 06:20:14 +02:00
Benjamin Peterson b29614e047 compare singletons by identity not equality (closes #16712)
Patch from Serhiy Storchaka.
2012-10-09 11:16:03 -04:00
David Malcolm 8d37ffa563 Issue #12605: Show information on more C frames within gdb backtraces
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
2012-06-27 14:15:34 -04:00
Benjamin Peterson 7d95e40721 Implement PEP 412: Key-sharing dictionaries (closes #13903)
Patch from Mark Shannon.
2012-04-23 11:24:50 -04:00
Victor Stinner d974393419 (Merge 3.2) Issue #13628: python-gdb.py is now able to retrieve more frames in
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()
2011-12-19 13:47:10 +01:00
Victor Stinner d208416a40 Issue #13628: python-gdb.py is now able to retrieve more frames in 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()
2011-12-19 13:42:24 +01:00
Antoine Pitrou ca2a1a335a Fix test_gdb failure 2011-12-12 19:18:24 +01:00
Florent Xicluna aa6c1d240f Issue #13575: there is only one class type. 2011-12-12 18:54:29 +01:00
Victor Stinner 0c4fbff6a7 libpython.py: defer call to gdb.lookup_type('PyUnicodeObject')
The lookup fails at startup if Python is linked to a shared library.
2011-12-08 00:08:22 +01:00
Victor Stinner f16a350baf Oops, really fix gdb/libpython.py for not ready Unicode strings 2011-11-04 22:34:01 +01:00
Victor Stinner e30c0a1014 Fix gdb/libpython.py for not ready Unicode strings
_PyUnicode_CheckConsistency() checks also hash and length value for not ready
Unicode strings.
2011-11-04 20:54:05 +01:00
Antoine Pitrou 3c0c5f29dd Fix test_gdb following the small unicode struct change in c25262e97304 (issue #13130) 2011-10-08 19:33:24 +02:00
Victor Stinner a3b334da6d PyUnicode_Ready() now sets ascii=1 if maxchar < 128
ascii=1 is no more reserved to PyASCIIObject. Use
PyUnicode_IS_COMPACT_ASCII(obj) to check if obj is a PyASCIIObject (as before).
2011-10-03 13:53:37 +02:00
Martin v. Löwis 24fa9832be Update for PEP 393. 2011-09-28 08:35:25 +02:00
Martin v. Löwis d63a3b8beb Implement PEP 393. 2011-09-28 07:41:54 +02:00
Victor Stinner d57c5c8a3a libpython.py (gdb) now catchs IOError in py-list and py-bt commands
py-list displays the error. py-bt ignores the error (the filename and line
number is already displayed).
2011-07-01 12:57:44 +02:00
Victor Stinner e670c889cc Issue #11996: libpython (gdb), replace "py-bt" command by "py-bt-full" and add
a smarter "py-bt" command printing a classic Python traceback.
2011-05-13 17:40:15 +02:00
Victor Stinner 6ffbee77dc libpython: implementation of os.fsencode() with surrogateescape error handler 2010-10-17 19:35:30 +00:00
Antoine Pitrou 7c9cf01238 gdb: fix representation of non-printable surrogate pairs, and workaround
a bug in ascii().
2010-09-08 21:57:37 +00:00
Antoine Pitrou b1856d7fa7 Add a safety limit to the number of unicode characters we fetch
(followup to r84635, suggested by Dave Malcolm).
2010-09-08 21:07:40 +00:00
Antoine Pitrou b41e128fe1 Issue #9188: The gdb extension now handles correctly narrow (UCS2) as well
as wide (UCS4) unicode builds for both the host interpreter (embedded
inside gdb) and the interpreter under test.
2010-09-08 20:57:48 +00:00
Victor Stinner 0e5a41b8f5 libpython.py: py-bt commands escape unencodable characters
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).
2010-08-17 22:49:25 +00:00
Georg Brandl b639c14c32 #9235: fix missing import of sys. 2010-07-14 08:54:40 +00:00
Georg Brandl b0eb5da018 Remove unused code that would raise a NameError. 2010-07-14 08:53:36 +00:00
Victor Stinner 150016fd24 Issue #8559: improve unicode support of (gdb) libpython.py
* 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)
2010-05-19 23:04:56 +00:00
Martin v. Löwis 5ae6810819 Issue #8380: Port gdb/libpython to 3.x. 2010-04-21 22:38:42 +00:00
Victor Stinner 67df3a4b7e Adapt libpython.py and test_gdb.py to Python3
* Rename PyStringObjectPtr to PyBytesObjectPtr
 * Replace PyObject_Print by textiowrapper_write
2010-04-21 13:53:05 +00:00
Martin v. Löwis 5226fd66e1 Merged revisions 79986-79987,80156 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r79986 | martin.v.loewis | 2010-04-12 07:18:16 +0200 (Mo, 12 Apr 2010) | 2 lines

  Issue #8330: Fix expected output in test_gdb.
........
  r79987 | martin.v.loewis | 2010-04-12 07:22:25 +0200 (Mo, 12 Apr 2010) | 2 lines

  Re-enable all tests, to see which ones fail on the buildbots.
........
  r80156 | martin.v.loewis | 2010-04-18 00:40:40 +0200 (So, 18 Apr 2010) | 2 lines

  Issue #8279: Fix test_gdb failures.
........
2010-04-21 06:05:58 +00:00
Victor Stinner 50eb60e6bf Merged revisions 80288 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r80288 | victor.stinner | 2010-04-21 00:28:31 +0200 (mer., 21 avril 2010) | 2 lines

  Issue #8437: Fix test_gdb failures, patch written by Dave Malcolm
........
2010-04-20 22:32:07 +00:00
Benjamin Peterson 6a6666ab7d Merged revisions 79548,79557,79616-79617,79716,79778,79795,79803,79896 via svnmerge from
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.
........
2010-04-11 21:49:28 +00:00