| 
									
										
											  
											
												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
										 |  |  | #!/usr/bin/python | 
					
						
							|  |  |  | '''
 | 
					
						
							|  |  |  | From gdb 7 onwards, gdb's build can be configured --with-python, allowing gdb | 
					
						
							|  |  |  | to be extended with Python code e.g. for library-specific data visualizations, | 
					
						
							|  |  |  | such as for the C++ STL types.  Documentation on this API can be seen at: | 
					
						
							|  |  |  | http://sourceware.org/gdb/current/onlinedocs/gdb/Python-API.html | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This python module deals with the case when the process being debugged (the | 
					
						
							|  |  |  | "inferior process" in gdb parlance) is itself python, or more specifically, | 
					
						
							|  |  |  | linked against libpython.  In this situation, almost every item of data is a | 
					
						
							|  |  |  | (PyObject*), and having the debugger merely print their addresses is not very | 
					
						
							|  |  |  | enlightening. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | This module embeds knowledge about the implementation details of libpython so | 
					
						
							|  |  |  | that we can emit useful visualizations e.g. a string, a list, a dict, a frame | 
					
						
							|  |  |  | giving file/line information and the state of local variables | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | In particular, given a gdb.Value corresponding to a PyObject* in the inferior | 
					
						
							|  |  |  | process, we can generate a "proxy value" within the gdb process.  For example, | 
					
						
							|  |  |  | given a PyObject* in the inferior process that is in fact a PyListObject* | 
					
						
							| 
									
										
										
										
											2010-04-21 13:53:05 +00:00
										 |  |  | holding three PyObject* that turn out to be PyBytesObject* instances, we can | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  | generate a proxy value within the gdb process that is a list of bytes | 
					
						
							|  |  |  | instances: | 
					
						
							|  |  |  |   [b"foo", b"bar", b"baz"] | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  | Doing so can be expensive for complicated graphs of objects, and could take | 
					
						
							|  |  |  | some time, so we also have a "write_repr" method that writes a representation | 
					
						
							|  |  |  | of the data to a file-like object.  This allows us to stop the traversal by | 
					
						
							|  |  |  | having the file-like object raise an exception if it gets too much data. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | With both "proxyval" and "write_repr" we keep track of the set of all addresses | 
					
						
							|  |  |  | visited so far in the traversal, to avoid infinite recursion due to cycles in | 
					
						
							|  |  |  | the graph of object references. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | We try to defer gdb.lookup_type() invocations for python types until as late as | 
					
						
							|  |  |  | possible: for a dynamically linked python binary, when the process starts in | 
					
						
							|  |  |  | the debugger, the libpython.so hasn't been dynamically loaded yet, so none of | 
					
						
							|  |  |  | the type names are known to the debugger | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The module also extends gdb with some python-specific commands. | 
					
						
							|  |  |  | '''
 | 
					
						
							| 
									
										
										
										
											2013-11-23 17:40:36 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | import gdb | 
					
						
							| 
									
										
										
										
											2013-11-23 17:40:36 +01:00
										 |  |  | import os | 
					
						
							| 
									
										
										
										
											2010-05-19 23:04:56 +00:00
										 |  |  | import locale | 
					
						
							| 
									
										
										
										
											2010-07-14 08:54:40 +00:00
										 |  |  | import sys | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-23 17:40:36 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | # Look up the gdb.Type for some standard types: | 
					
						
							| 
									
										
										
										
											2016-04-20 18:07:21 +02:00
										 |  |  | # Those need to be refreshed as types (pointer sizes) may change when | 
					
						
							|  |  |  | # gdb loads different executables | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def _type_char_ptr(): | 
					
						
							|  |  |  |     return gdb.lookup_type('char').pointer()  # char* | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def _type_unsigned_char_ptr(): | 
					
						
							|  |  |  |     return gdb.lookup_type('unsigned char').pointer()  # unsigned char* | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def _type_unsigned_short_ptr(): | 
					
						
							|  |  |  |     return gdb.lookup_type('unsigned short').pointer() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def _type_unsigned_int_ptr(): | 
					
						
							|  |  |  |     return gdb.lookup_type('unsigned int').pointer() | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-20 18:07:21 +02:00
										 |  |  | def _sizeof_void_p(): | 
					
						
							| 
									
										
										
										
											2016-04-20 18:26:12 +02:00
										 |  |  |     return gdb.lookup_type('void').pointer().sizeof | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-01 15:29:19 -05:00
										 |  |  | def _managed_dict_offset(): | 
					
						
							|  |  |  |     # See pycore_object.h | 
					
						
							|  |  |  |     pyobj = gdb.lookup_type("PyObject") | 
					
						
							|  |  |  |     if any(field.name == "ob_ref_local" for field in pyobj.fields()): | 
					
						
							|  |  |  |         return -1 * _sizeof_void_p() | 
					
						
							|  |  |  |     else: | 
					
						
							|  |  |  |         return -3 * _sizeof_void_p() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-04-02 11:59:21 +01:00
										 |  |  | Py_TPFLAGS_INLINE_VALUES     = (1 << 2) | 
					
						
							| 
									
										
										
										
											2021-12-07 16:02:53 +00:00
										 |  |  | Py_TPFLAGS_MANAGED_DICT      = (1 << 4) | 
					
						
							|  |  |  | Py_TPFLAGS_HEAPTYPE          = (1 << 9) | 
					
						
							| 
									
										
										
										
											2013-11-23 17:40:36 +01:00
										 |  |  | Py_TPFLAGS_LONG_SUBCLASS     = (1 << 24) | 
					
						
							|  |  |  | Py_TPFLAGS_LIST_SUBCLASS     = (1 << 25) | 
					
						
							|  |  |  | Py_TPFLAGS_TUPLE_SUBCLASS    = (1 << 26) | 
					
						
							|  |  |  | Py_TPFLAGS_BYTES_SUBCLASS    = (1 << 27) | 
					
						
							|  |  |  | Py_TPFLAGS_UNICODE_SUBCLASS  = (1 << 28) | 
					
						
							|  |  |  | Py_TPFLAGS_DICT_SUBCLASS     = (1 << 29) | 
					
						
							|  |  |  | Py_TPFLAGS_BASE_EXC_SUBCLASS = (1 << 30) | 
					
						
							|  |  |  | Py_TPFLAGS_TYPE_SUBCLASS     = (1 << 31) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-10 04:34:57 -08:00
										 |  |  | #From pycore_frame.h | 
					
						
							|  |  |  | FRAME_OWNED_BY_CSTACK = 3 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  | MAX_OUTPUT_LEN=1024 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  | hexdigits = "0123456789abcdef" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-27 03:10:43 +08:00
										 |  |  | USED_TAGS = 0b11 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-05-19 23:04:56 +00:00
										 |  |  | ENCODING = locale.getpreferredencoding() | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-20 08:23:26 +01:00
										 |  |  | FRAME_INFO_OPTIMIZED_OUT = '(frame information optimized out)' | 
					
						
							|  |  |  | UNABLE_READ_INFO_PYTHON_FRAME = 'Unable to read information on python frame' | 
					
						
							| 
									
										
										
										
											2017-08-21 16:40:29 -07:00
										 |  |  | EVALFRAME = '_PyEval_EvalFrameDefault' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | class NullPyObjectPtr(RuntimeError): | 
					
						
							|  |  |  |     pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def safety_limit(val): | 
					
						
							| 
									
										
										
										
											2015-11-02 03:37:02 +00:00
										 |  |  |     # Given an integer value from the process being debugged, limit it to some | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |     # safety threshold so that arbitrary breakage within said process doesn't | 
					
						
							|  |  |  |     # break the gdb process too much (e.g. sizes of iterations, sizes of lists) | 
					
						
							|  |  |  |     return min(val, 1000) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def safe_range(val): | 
					
						
							|  |  |  |     # As per range, but don't trust the value too much: cap it to a safety | 
					
						
							|  |  |  |     # threshold in case the data was corrupted | 
					
						
							| 
									
										
										
										
											2022-03-15 17:04:11 +09:00
										 |  |  |     return range(safety_limit(int(val))) | 
					
						
							| 
									
										
										
										
											2013-11-23 17:40:36 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | class StringTruncated(RuntimeError): | 
					
						
							|  |  |  |     pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class TruncatedStringIO(object): | 
					
						
							| 
									
										
										
										
											2013-08-29 11:35:43 +03:00
										 |  |  |     '''Similar to io.StringIO, but can truncate the output by raising a
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |     StringTruncated exception'''
 | 
					
						
							|  |  |  |     def __init__(self, maxlen=None): | 
					
						
							|  |  |  |         self._val = '' | 
					
						
							|  |  |  |         self.maxlen = maxlen | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def write(self, data): | 
					
						
							|  |  |  |         if self.maxlen: | 
					
						
							|  |  |  |             if len(data) + len(self._val) > self.maxlen: | 
					
						
							|  |  |  |                 # Truncation: | 
					
						
							|  |  |  |                 self._val += data[0:self.maxlen - len(self._val)] | 
					
						
							|  |  |  |                 raise StringTruncated() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self._val += data | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def getvalue(self): | 
					
						
							|  |  |  |         return self._val | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PyObjectPtr(object): | 
					
						
							|  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2015-11-02 03:37:02 +00:00
										 |  |  |     Class wrapping a gdb.Value that's either a (PyObject*) within the | 
					
						
							| 
									
										
										
										
											2010-04-21 13:53:05 +00:00
										 |  |  |     inferior process, or some subclass pointer e.g. (PyBytesObject*) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  |     There will be a subclass for every refined PyObject type that we care | 
					
						
							|  |  |  |     about. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Note that at every stage the underlying pointer could be NULL, point | 
					
						
							|  |  |  |     to corrupt data, etc; this is the debugger, after all. | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     _typename = 'PyObject' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def __init__(self, gdbval, cast_to=None): | 
					
						
							| 
									
										
										
										
											2024-06-27 03:10:43 +08:00
										 |  |  |         # Clear the tagged pointer | 
					
						
							| 
									
										
										
										
											2024-09-12 12:37:06 -04:00
										 |  |  |         if gdbval.type.name == '_PyStackRef': | 
					
						
							|  |  |  |             if cast_to is None: | 
					
						
							|  |  |  |                 cast_to = gdb.lookup_type('PyObject').pointer() | 
					
						
							|  |  |  |             self._gdbval = gdb.Value(int(gdbval['bits']) & ~USED_TAGS).cast(cast_to) | 
					
						
							|  |  |  |         elif cast_to: | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |             self._gdbval = gdbval.cast(cast_to) | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             self._gdbval = gdbval | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def field(self, name): | 
					
						
							|  |  |  |         '''
 | 
					
						
							| 
									
										
										
										
											2023-06-14 12:30:22 +02:00
										 |  |  |         Get the gdb.Value for the given field within the PyObject. | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  |         Various libpython types are defined using the "PyObject_HEAD" and | 
					
						
							|  |  |  |         "PyObject_VAR_HEAD" macros. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-14 12:30:22 +02:00
										 |  |  |         In Python, this is defined as an embedded PyVarObject type thus: | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |            PyVarObject ob_base; | 
					
						
							|  |  |  |         so that the "ob_size" field is located insize the "ob_base" field, and | 
					
						
							|  |  |  |         the "ob_type" is most easily accessed by casting back to a (PyObject*). | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         if self.is_null(): | 
					
						
							|  |  |  |             raise NullPyObjectPtr(self) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if name == 'ob_type': | 
					
						
							|  |  |  |             pyo_ptr = self._gdbval.cast(PyObjectPtr.get_gdb_type()) | 
					
						
							|  |  |  |             return pyo_ptr.dereference()[name] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if name == 'ob_size': | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  |             pyo_ptr = self._gdbval.cast(PyVarObjectPtr.get_gdb_type()) | 
					
						
							|  |  |  |             return pyo_ptr.dereference()[name] | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  |         # General case: look it up inside the object: | 
					
						
							|  |  |  |         return self._gdbval.dereference()[name] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def pyop_field(self, name): | 
					
						
							|  |  |  |         '''
 | 
					
						
							| 
									
										
										
										
											2023-06-14 12:30:22 +02:00
										 |  |  |         Get a PyObjectPtr for the given PyObject* field within this PyObject. | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         '''
 | 
					
						
							|  |  |  |         return PyObjectPtr.from_pyobject_ptr(self.field(name)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def write_field_repr(self, name, out, visited): | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         Extract the PyObject* field named "name", and write its representation | 
					
						
							|  |  |  |         to file-like object "out" | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         field_obj = self.pyop_field(name) | 
					
						
							|  |  |  |         field_obj.write_repr(out, visited) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def get_truncated_repr(self, maxlen): | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         Get a repr-like string for the data, but truncate it at "maxlen" bytes | 
					
						
							|  |  |  |         (ending the object graph traversal as soon as you do) | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         out = TruncatedStringIO(maxlen) | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             self.write_repr(out, set()) | 
					
						
							|  |  |  |         except StringTruncated: | 
					
						
							|  |  |  |             # Truncation occurred: | 
					
						
							|  |  |  |             return out.getvalue() + '...(truncated)' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # No truncation occurred: | 
					
						
							|  |  |  |         return out.getvalue() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def type(self): | 
					
						
							|  |  |  |         return PyTypeObjectPtr(self.field('ob_type')) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def is_null(self): | 
					
						
							| 
									
										
										
										
											2022-03-15 17:04:11 +09:00
										 |  |  |         return 0 == int(self._gdbval) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  |     def is_optimized_out(self): | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         Is the value of the underlying PyObject* visible to the debugger? | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         This can vary with the precise version of the compiler used to build | 
					
						
							|  |  |  |         Python, and the precise version of gdb. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         See e.g. https://bugzilla.redhat.com/show_bug.cgi?id=556975 with | 
					
						
							|  |  |  |         PyEval_EvalFrameEx's "f" | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         return self._gdbval.is_optimized_out | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def safe_tp_name(self): | 
					
						
							|  |  |  |         try: | 
					
						
							| 
									
										
										
										
											2018-06-14 22:34:52 +02:00
										 |  |  |             ob_type = self.type() | 
					
						
							|  |  |  |             tp_name = ob_type.field('tp_name') | 
					
						
							|  |  |  |             return tp_name.string() | 
					
						
							|  |  |  |         # NullPyObjectPtr: NULL tp_name? | 
					
						
							|  |  |  |         # RuntimeError: Can't even read the object at all? | 
					
						
							|  |  |  |         # UnicodeDecodeError: Failed to decode tp_name bytestring | 
					
						
							|  |  |  |         except (NullPyObjectPtr, RuntimeError, UnicodeDecodeError): | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |             return 'unknown' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def proxyval(self, visited): | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         Scrape a value from the inferior process, and try to represent it | 
					
						
							|  |  |  |         within the gdb process, whilst (hopefully) avoiding crashes when | 
					
						
							|  |  |  |         the remote data is corrupt. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         Derived classes will override this. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-02 13:57:45 +05:00
										 |  |  |         For example, a PyLongObjectPtr* with long_value 42 in the inferior process | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         should result in an int(42) in this process. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         visited: a set of all gdb.Value pyobject pointers already visited | 
					
						
							|  |  |  |         whilst generating this value (to guard against infinite recursion when | 
					
						
							|  |  |  |         visiting object graphs with loops).  Analogous to Py_ReprEnter and | 
					
						
							|  |  |  |         Py_ReprLeave | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         class FakeRepr(object): | 
					
						
							|  |  |  |             """
 | 
					
						
							|  |  |  |             Class representing a non-descript PyObject* value in the inferior | 
					
						
							|  |  |  |             process for when we don't have a custom scraper, intended to have | 
					
						
							|  |  |  |             a sane repr(). | 
					
						
							|  |  |  |             """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             def __init__(self, tp_name, address): | 
					
						
							|  |  |  |                 self.tp_name = tp_name | 
					
						
							|  |  |  |                 self.address = address | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             def __repr__(self): | 
					
						
							|  |  |  |                 # For the NULL pointer, we have no way of knowing a type, so | 
					
						
							|  |  |  |                 # special-case it as per | 
					
						
							|  |  |  |                 # http://bugs.python.org/issue8032#msg100882 | 
					
						
							|  |  |  |                 if self.address == 0: | 
					
						
							|  |  |  |                     return '0x0' | 
					
						
							|  |  |  |                 return '<%s at remote 0x%x>' % (self.tp_name, self.address) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return FakeRepr(self.safe_tp_name(), | 
					
						
							| 
									
										
										
										
											2022-03-15 17:04:11 +09:00
										 |  |  |                         int(self._gdbval)) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  |     def write_repr(self, out, visited): | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         Write a string representation of the value scraped from the inferior | 
					
						
							|  |  |  |         process to "out", a file-like object. | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         # Default implementation: generate a proxy value and write its repr | 
					
						
							|  |  |  |         # However, this could involve a lot of work for complicated objects, | 
					
						
							|  |  |  |         # so for derived classes we specialize this | 
					
						
							|  |  |  |         return out.write(repr(self.proxyval(visited))) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @classmethod | 
					
						
							|  |  |  |     def subclass_from_type(cls, t): | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         Given a PyTypeObjectPtr instance wrapping a gdb.Value that's a | 
					
						
							|  |  |  |         (PyTypeObject*), determine the corresponding subclass of PyObjectPtr | 
					
						
							|  |  |  |         to use | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         Ideally, we would look up the symbols for the global types, but that | 
					
						
							|  |  |  |         isn't working yet: | 
					
						
							|  |  |  |           (gdb) python print gdb.lookup_symbol('PyList_Type')[0].value | 
					
						
							|  |  |  |           Traceback (most recent call last): | 
					
						
							|  |  |  |             File "<string>", line 1, in <module> | 
					
						
							|  |  |  |           NotImplementedError: Symbol type not yet supported in Python scripts. | 
					
						
							|  |  |  |           Error while executing Python code. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         For now, we use tp_flags, after doing some string comparisons on the | 
					
						
							|  |  |  |         tp_name for some special-cases that don't seem to be visible through | 
					
						
							|  |  |  |         flags | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             tp_name = t.field('tp_name').string() | 
					
						
							|  |  |  |             tp_flags = int(t.field('tp_flags')) | 
					
						
							| 
									
										
										
										
											2018-06-14 22:34:52 +02:00
										 |  |  |         # RuntimeError: NULL pointers | 
					
						
							|  |  |  |         # UnicodeDecodeError: string() fails to decode the bytestring | 
					
						
							|  |  |  |         except (RuntimeError, UnicodeDecodeError): | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |             # Handle any kind of error e.g. NULL ptrs by simply using the base | 
					
						
							|  |  |  |             # class | 
					
						
							|  |  |  |             return cls | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-23 17:40:36 +01:00
										 |  |  |         #print('tp_flags = 0x%08x' % tp_flags) | 
					
						
							|  |  |  |         #print('tp_name = %r' % tp_name) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  |         name_map = {'bool': PyBoolObjectPtr, | 
					
						
							|  |  |  |                     'classobj': PyClassObjectPtr, | 
					
						
							|  |  |  |                     'NoneType': PyNoneStructPtr, | 
					
						
							|  |  |  |                     'frame': PyFrameObjectPtr, | 
					
						
							|  |  |  |                     'set' : PySetObjectPtr, | 
					
						
							|  |  |  |                     'frozenset' : PySetObjectPtr, | 
					
						
							|  |  |  |                     'builtin_function_or_method' : PyCFunctionObjectPtr, | 
					
						
							| 
									
										
										
										
											2017-02-01 16:29:54 +01:00
										 |  |  |                     'method-wrapper': wrapperobject, | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |                     } | 
					
						
							|  |  |  |         if tp_name in name_map: | 
					
						
							|  |  |  |             return name_map[tp_name] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if tp_flags & Py_TPFLAGS_HEAPTYPE: | 
					
						
							|  |  |  |             return HeapTypeObjectPtr | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if tp_flags & Py_TPFLAGS_LONG_SUBCLASS: | 
					
						
							|  |  |  |             return PyLongObjectPtr | 
					
						
							|  |  |  |         if tp_flags & Py_TPFLAGS_LIST_SUBCLASS: | 
					
						
							|  |  |  |             return PyListObjectPtr | 
					
						
							|  |  |  |         if tp_flags & Py_TPFLAGS_TUPLE_SUBCLASS: | 
					
						
							|  |  |  |             return PyTupleObjectPtr | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  |         if tp_flags & Py_TPFLAGS_BYTES_SUBCLASS: | 
					
						
							| 
									
										
										
										
											2010-04-21 13:53:05 +00:00
										 |  |  |             return PyBytesObjectPtr | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         if tp_flags & Py_TPFLAGS_UNICODE_SUBCLASS: | 
					
						
							|  |  |  |             return PyUnicodeObjectPtr | 
					
						
							|  |  |  |         if tp_flags & Py_TPFLAGS_DICT_SUBCLASS: | 
					
						
							|  |  |  |             return PyDictObjectPtr | 
					
						
							|  |  |  |         if tp_flags & Py_TPFLAGS_BASE_EXC_SUBCLASS: | 
					
						
							|  |  |  |             return PyBaseExceptionObjectPtr | 
					
						
							|  |  |  |         #if tp_flags & Py_TPFLAGS_TYPE_SUBCLASS: | 
					
						
							|  |  |  |         #    return PyTypeObjectPtr | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Use the base class: | 
					
						
							|  |  |  |         return cls | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @classmethod | 
					
						
							|  |  |  |     def from_pyobject_ptr(cls, gdbval): | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         Try to locate the appropriate derived class dynamically, and cast | 
					
						
							|  |  |  |         the pointer accordingly. | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             p = PyObjectPtr(gdbval) | 
					
						
							|  |  |  |             cls = cls.subclass_from_type(p.type()) | 
					
						
							|  |  |  |             return cls(gdbval, cast_to=cls.get_gdb_type()) | 
					
						
							|  |  |  |         except RuntimeError: | 
					
						
							|  |  |  |             # Handle any kind of error e.g. NULL ptrs by simply using the base | 
					
						
							|  |  |  |             # class | 
					
						
							|  |  |  |             pass | 
					
						
							|  |  |  |         return cls(gdbval) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @classmethod | 
					
						
							|  |  |  |     def get_gdb_type(cls): | 
					
						
							|  |  |  |         return gdb.lookup_type(cls._typename).pointer() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def as_address(self): | 
					
						
							| 
									
										
										
										
											2022-03-15 17:04:11 +09:00
										 |  |  |         return int(self._gdbval) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  | class PyVarObjectPtr(PyObjectPtr): | 
					
						
							|  |  |  |     _typename = 'PyVarObject' | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  | class ProxyAlreadyVisited(object): | 
					
						
							|  |  |  |     '''
 | 
					
						
							|  |  |  |     Placeholder proxy to use when protecting against infinite recursion due to | 
					
						
							|  |  |  |     loops in the object graph. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Analogous to the values emitted by the users of Py_ReprEnter and Py_ReprLeave | 
					
						
							|  |  |  |     '''
 | 
					
						
							|  |  |  |     def __init__(self, rep): | 
					
						
							|  |  |  |         self._rep = rep | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def __repr__(self): | 
					
						
							|  |  |  |         return self._rep | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def _write_instance_repr(out, visited, name, pyop_attrdict, address): | 
					
						
							| 
									
										
										
										
											2011-12-12 18:54:29 +01:00
										 |  |  |     '''Shared code for use by all classes:
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |     write a representation to file-like object "out"'''
 | 
					
						
							|  |  |  |     out.write('<') | 
					
						
							|  |  |  |     out.write(name) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # Write dictionary of instance attributes: | 
					
						
							| 
									
										
										
										
											2021-10-13 14:19:34 +01:00
										 |  |  |     if isinstance(pyop_attrdict, (PyKeysValuesPair, PyDictObjectPtr)): | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         out.write('(') | 
					
						
							|  |  |  |         first = True | 
					
						
							| 
									
										
										
										
											2021-10-13 14:19:34 +01:00
										 |  |  |         items = pyop_attrdict.iteritems() | 
					
						
							|  |  |  |         for pyop_arg, pyop_val in items: | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |             if not first: | 
					
						
							|  |  |  |                 out.write(', ') | 
					
						
							|  |  |  |             first = False | 
					
						
							|  |  |  |             out.write(pyop_arg.proxyval(visited)) | 
					
						
							|  |  |  |             out.write('=') | 
					
						
							|  |  |  |             pyop_val.write_repr(out, visited) | 
					
						
							|  |  |  |         out.write(')') | 
					
						
							|  |  |  |     out.write(' at remote 0x%x>' % address) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class InstanceProxy(object): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def __init__(self, cl_name, attrdict, address): | 
					
						
							|  |  |  |         self.cl_name = cl_name | 
					
						
							|  |  |  |         self.attrdict = attrdict | 
					
						
							|  |  |  |         self.address = address | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def __repr__(self): | 
					
						
							|  |  |  |         if isinstance(self.attrdict, dict): | 
					
						
							|  |  |  |             kwargs = ', '.join(["%s=%r" % (arg, val) | 
					
						
							| 
									
										
										
										
											2020-12-24 18:16:04 +01:00
										 |  |  |                                 for arg, val in self.attrdict.items()]) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |             return '<%s(%s) at remote 0x%x>' % (self.cl_name, | 
					
						
							|  |  |  |                                                 kwargs, self.address) | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             return '<%s at remote 0x%x>' % (self.cl_name, | 
					
						
							|  |  |  |                                             self.address) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def _PyObject_VAR_SIZE(typeobj, nitems): | 
					
						
							| 
									
										
										
										
											2011-12-19 13:42:24 +01:00
										 |  |  |     if _PyObject_VAR_SIZE._type_size_t is None: | 
					
						
							|  |  |  |         _PyObject_VAR_SIZE._type_size_t = gdb.lookup_type('size_t') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |     return ( ( typeobj.field('tp_basicsize') + | 
					
						
							|  |  |  |                nitems * typeobj.field('tp_itemsize') + | 
					
						
							| 
									
										
										
										
											2016-04-20 18:07:21 +02:00
										 |  |  |                (_sizeof_void_p() - 1) | 
					
						
							|  |  |  |              ) & ~(_sizeof_void_p() - 1) | 
					
						
							| 
									
										
										
										
											2011-12-19 13:42:24 +01:00
										 |  |  |            ).cast(_PyObject_VAR_SIZE._type_size_t) | 
					
						
							|  |  |  | _PyObject_VAR_SIZE._type_size_t = None | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  | class HeapTypeObjectPtr(PyObjectPtr): | 
					
						
							|  |  |  |     _typename = 'PyObject' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def get_attr_dict(self): | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         Get the PyDictObject ptr representing the attribute dictionary | 
					
						
							|  |  |  |         (or None if there's a problem) | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             typeobj = self.type() | 
					
						
							|  |  |  |             dictoffset = int_from_int(typeobj.field('tp_dictoffset')) | 
					
						
							|  |  |  |             if dictoffset != 0: | 
					
						
							|  |  |  |                 if dictoffset < 0: | 
					
						
							| 
									
										
										
										
											2022-08-15 12:29:27 +01:00
										 |  |  |                     if int_from_int(typeobj.field('tp_flags')) & Py_TPFLAGS_MANAGED_DICT: | 
					
						
							|  |  |  |                         assert dictoffset == -1 | 
					
						
							| 
									
										
										
										
											2024-02-01 15:29:19 -05:00
										 |  |  |                         dictoffset = _managed_dict_offset() | 
					
						
							| 
									
										
										
										
											2022-08-15 12:29:27 +01:00
										 |  |  |                     else: | 
					
						
							|  |  |  |                         type_PyVarObject_ptr = gdb.lookup_type('PyVarObject').pointer() | 
					
						
							|  |  |  |                         tsize = int_from_int(self._gdbval.cast(type_PyVarObject_ptr)['ob_size']) | 
					
						
							|  |  |  |                         if tsize < 0: | 
					
						
							|  |  |  |                             tsize = -tsize | 
					
						
							|  |  |  |                         size = _PyObject_VAR_SIZE(typeobj, tsize) | 
					
						
							|  |  |  |                         dictoffset += size | 
					
						
							|  |  |  |                         assert dictoffset % _sizeof_void_p() == 0 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-20 18:07:21 +02:00
										 |  |  |                 dictptr = self._gdbval.cast(_type_char_ptr()) + dictoffset | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |                 PyObjectPtrPtr = PyObjectPtr.get_gdb_type().pointer() | 
					
						
							|  |  |  |                 dictptr = dictptr.cast(PyObjectPtrPtr) | 
					
						
							| 
									
										
										
										
											2022-08-01 14:34:54 +01:00
										 |  |  |                 if int(dictptr.dereference()) & 1: | 
					
						
							|  |  |  |                     return None | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |                 return PyObjectPtr.from_pyobject_ptr(dictptr.dereference()) | 
					
						
							|  |  |  |         except RuntimeError: | 
					
						
							|  |  |  |             # Corrupt data somewhere; fail safe | 
					
						
							|  |  |  |             pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Not found, or some kind of error: | 
					
						
							|  |  |  |         return None | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-13 14:19:34 +01:00
										 |  |  |     def get_keys_values(self): | 
					
						
							|  |  |  |         typeobj = self.type() | 
					
						
							| 
									
										
										
										
											2021-12-07 16:02:53 +00:00
										 |  |  |         has_values =  int_from_int(typeobj.field('tp_flags')) & Py_TPFLAGS_MANAGED_DICT | 
					
						
							|  |  |  |         if not has_values: | 
					
						
							| 
									
										
										
										
											2021-10-13 14:19:34 +01:00
										 |  |  |             return None | 
					
						
							| 
									
										
										
										
											2024-04-02 11:59:21 +01:00
										 |  |  |         obj_ptr = self._gdbval.cast(_type_char_ptr()) | 
					
						
							|  |  |  |         dict_ptr_ptr = obj_ptr + _managed_dict_offset() | 
					
						
							|  |  |  |         dict_ptr = dict_ptr_ptr.cast(_type_char_ptr().pointer()).dereference() | 
					
						
							|  |  |  |         if int(dict_ptr): | 
					
						
							| 
									
										
										
										
											2021-10-13 14:19:34 +01:00
										 |  |  |             return None | 
					
						
							| 
									
										
										
										
											2024-08-21 15:52:04 +01:00
										 |  |  |         char_ptr = obj_ptr + typeobj.field('tp_basicsize') | 
					
						
							| 
									
										
										
										
											2022-08-01 14:34:54 +01:00
										 |  |  |         values_ptr = char_ptr.cast(gdb.lookup_type("PyDictValues").pointer()) | 
					
						
							|  |  |  |         values = values_ptr['values'] | 
					
						
							| 
									
										
										
										
											2021-10-13 14:19:34 +01:00
										 |  |  |         return PyKeysValuesPair(self.get_cached_keys(), values) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def get_cached_keys(self): | 
					
						
							|  |  |  |         typeobj = self.type() | 
					
						
							|  |  |  |         HeapTypePtr = gdb.lookup_type("PyHeapTypeObject").pointer() | 
					
						
							|  |  |  |         return typeobj._gdbval.cast(HeapTypePtr)['ht_cached_keys'] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |     def proxyval(self, visited): | 
					
						
							|  |  |  |         '''
 | 
					
						
							| 
									
										
										
										
											2011-12-12 18:54:29 +01:00
										 |  |  |         Support for classes. | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  |         Currently we just locate the dictionary using a transliteration to | 
					
						
							|  |  |  |         python of _PyObject_GetDictPtr, ignoring descriptors | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         # Guard against infinite loops: | 
					
						
							|  |  |  |         if self.as_address() in visited: | 
					
						
							|  |  |  |             return ProxyAlreadyVisited('<...>') | 
					
						
							|  |  |  |         visited.add(self.as_address()) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-13 14:19:34 +01:00
										 |  |  |         keys_values = self.get_keys_values() | 
					
						
							|  |  |  |         if keys_values: | 
					
						
							|  |  |  |             attr_dict = keys_values.proxyval(visited) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         else: | 
					
						
							| 
									
										
										
										
											2022-08-01 14:34:54 +01:00
										 |  |  |             pyop_attr_dict = self.get_attr_dict() | 
					
						
							|  |  |  |             if pyop_attr_dict: | 
					
						
							|  |  |  |                 attr_dict = pyop_attr_dict.proxyval(visited) | 
					
						
							|  |  |  |             else: | 
					
						
							|  |  |  |                 attr_dict = {} | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         tp_name = self.safe_tp_name() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-12 18:54:29 +01:00
										 |  |  |         # Class: | 
					
						
							| 
									
										
										
										
											2022-03-15 17:04:11 +09:00
										 |  |  |         return InstanceProxy(tp_name, attr_dict, int(self._gdbval)) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  |     def write_repr(self, out, visited): | 
					
						
							|  |  |  |         # Guard against infinite loops: | 
					
						
							|  |  |  |         if self.as_address() in visited: | 
					
						
							|  |  |  |             out.write('<...>') | 
					
						
							|  |  |  |             return | 
					
						
							|  |  |  |         visited.add(self.as_address()) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-13 14:19:34 +01:00
										 |  |  |         pyop_attrs = self.get_keys_values() | 
					
						
							|  |  |  |         if not pyop_attrs: | 
					
						
							|  |  |  |             pyop_attrs = self.get_attr_dict() | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         _write_instance_repr(out, visited, | 
					
						
							| 
									
										
										
										
											2021-10-13 14:19:34 +01:00
										 |  |  |                              self.safe_tp_name(), pyop_attrs, self.as_address()) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  | class ProxyException(Exception): | 
					
						
							|  |  |  |     def __init__(self, tp_name, args): | 
					
						
							|  |  |  |         self.tp_name = tp_name | 
					
						
							|  |  |  |         self.args = args | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def __repr__(self): | 
					
						
							|  |  |  |         return '%s%r' % (self.tp_name, self.args) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PyBaseExceptionObjectPtr(PyObjectPtr): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Class wrapping a gdb.Value that's a PyBaseExceptionObject* i.e. an exception | 
					
						
							|  |  |  |     within the process being debugged. | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     _typename = 'PyBaseExceptionObject' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def proxyval(self, visited): | 
					
						
							|  |  |  |         # Guard against infinite loops: | 
					
						
							|  |  |  |         if self.as_address() in visited: | 
					
						
							|  |  |  |             return ProxyAlreadyVisited('(...)') | 
					
						
							|  |  |  |         visited.add(self.as_address()) | 
					
						
							|  |  |  |         arg_proxy = self.pyop_field('args').proxyval(visited) | 
					
						
							|  |  |  |         return ProxyException(self.safe_tp_name(), | 
					
						
							|  |  |  |                               arg_proxy) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def write_repr(self, out, visited): | 
					
						
							|  |  |  |         # Guard against infinite loops: | 
					
						
							|  |  |  |         if self.as_address() in visited: | 
					
						
							|  |  |  |             out.write('(...)') | 
					
						
							|  |  |  |             return | 
					
						
							|  |  |  |         visited.add(self.as_address()) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         out.write(self.safe_tp_name()) | 
					
						
							|  |  |  |         self.write_field_repr('args', out, visited) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PyClassObjectPtr(PyObjectPtr): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Class wrapping a gdb.Value that's a PyClassObject* i.e. a <classobj> | 
					
						
							|  |  |  |     instance within the process being debugged. | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     _typename = 'PyClassObject' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class BuiltInFunctionProxy(object): | 
					
						
							|  |  |  |     def __init__(self, ml_name): | 
					
						
							|  |  |  |         self.ml_name = ml_name | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def __repr__(self): | 
					
						
							|  |  |  |         return "<built-in function %s>" % self.ml_name | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class BuiltInMethodProxy(object): | 
					
						
							|  |  |  |     def __init__(self, ml_name, pyop_m_self): | 
					
						
							|  |  |  |         self.ml_name = ml_name | 
					
						
							|  |  |  |         self.pyop_m_self = pyop_m_self | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def __repr__(self): | 
					
						
							|  |  |  |         return ('<built-in method %s of %s object at remote 0x%x>' | 
					
						
							|  |  |  |                 % (self.ml_name, | 
					
						
							|  |  |  |                    self.pyop_m_self.safe_tp_name(), | 
					
						
							|  |  |  |                    self.pyop_m_self.as_address()) | 
					
						
							|  |  |  |                 ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PyCFunctionObjectPtr(PyObjectPtr): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Class wrapping a gdb.Value that's a PyCFunctionObject* | 
					
						
							|  |  |  |     (see Include/methodobject.h and Objects/methodobject.c) | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     _typename = 'PyCFunctionObject' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def proxyval(self, visited): | 
					
						
							|  |  |  |         m_ml = self.field('m_ml') # m_ml is a (PyMethodDef*) | 
					
						
							| 
									
										
										
										
											2018-06-14 22:34:52 +02:00
										 |  |  |         try: | 
					
						
							|  |  |  |             ml_name = m_ml['ml_name'].string() | 
					
						
							|  |  |  |         except UnicodeDecodeError: | 
					
						
							|  |  |  |             ml_name = '<ml_name:UnicodeDecodeError>' | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  |         pyop_m_self = self.pyop_field('m_self') | 
					
						
							|  |  |  |         if pyop_m_self.is_null(): | 
					
						
							|  |  |  |             return BuiltInFunctionProxy(ml_name) | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             return BuiltInMethodProxy(ml_name, pyop_m_self) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-21 16:10:37 +01:00
										 |  |  | # Python implementation of location table parsing algorithm | 
					
						
							|  |  |  | def read(it): | 
					
						
							|  |  |  |     return ord(next(it)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def read_varint(it): | 
					
						
							|  |  |  |     b = read(it) | 
					
						
							|  |  |  |     val = b & 63; | 
					
						
							|  |  |  |     shift = 0; | 
					
						
							|  |  |  |     while b & 64: | 
					
						
							|  |  |  |         b = read(it) | 
					
						
							|  |  |  |         shift += 6 | 
					
						
							|  |  |  |         val |= (b&63) << shift | 
					
						
							|  |  |  |     return val | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def read_signed_varint(it): | 
					
						
							|  |  |  |     uval = read_varint(it) | 
					
						
							|  |  |  |     if uval & 1: | 
					
						
							|  |  |  |         return -(uval >> 1) | 
					
						
							|  |  |  |     else: | 
					
						
							|  |  |  |         return uval >> 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def parse_location_table(firstlineno, linetable): | 
					
						
							|  |  |  |     line = firstlineno | 
					
						
							|  |  |  |     addr = 0 | 
					
						
							|  |  |  |     it = iter(linetable) | 
					
						
							|  |  |  |     while True: | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             first_byte = read(it) | 
					
						
							|  |  |  |         except StopIteration: | 
					
						
							|  |  |  |             return | 
					
						
							|  |  |  |         code = (first_byte >> 3) & 15 | 
					
						
							|  |  |  |         length = (first_byte & 7) + 1 | 
					
						
							|  |  |  |         end_addr = addr + length | 
					
						
							|  |  |  |         if code == 15: | 
					
						
							|  |  |  |             yield addr, end_addr, None | 
					
						
							|  |  |  |             addr = end_addr | 
					
						
							|  |  |  |             continue | 
					
						
							|  |  |  |         elif code == 14: # Long form | 
					
						
							|  |  |  |             line_delta = read_signed_varint(it) | 
					
						
							|  |  |  |             line += line_delta | 
					
						
							|  |  |  |             end_line = line + read_varint(it) | 
					
						
							|  |  |  |             col = read_varint(it) | 
					
						
							|  |  |  |             end_col = read_varint(it) | 
					
						
							|  |  |  |         elif code == 13: # No column | 
					
						
							|  |  |  |             line_delta = read_signed_varint(it) | 
					
						
							|  |  |  |             line += line_delta | 
					
						
							|  |  |  |         elif code in (10, 11, 12): # new line | 
					
						
							|  |  |  |             line_delta = code - 10 | 
					
						
							|  |  |  |             line += line_delta | 
					
						
							|  |  |  |             column = read(it) | 
					
						
							|  |  |  |             end_column = read(it) | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             assert (0 <= code < 10) | 
					
						
							|  |  |  |             second_byte = read(it) | 
					
						
							|  |  |  |             column = code << 3 | (second_byte >> 4) | 
					
						
							|  |  |  |         yield addr, end_addr, line | 
					
						
							|  |  |  |         addr = end_addr | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  | class PyCodeObjectPtr(PyObjectPtr): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Class wrapping a gdb.Value that's a PyCodeObject* i.e. a <code> instance | 
					
						
							|  |  |  |     within the process being debugged. | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     _typename = 'PyCodeObject' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def addr2line(self, addrq): | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         Get the line number for a given bytecode offset | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         Analogous to PyCode_Addr2Line; translated from pseudocode in | 
					
						
							|  |  |  |         Objects/lnotab_notes.txt | 
					
						
							|  |  |  |         '''
 | 
					
						
							| 
									
										
										
										
											2020-11-12 09:43:29 +00:00
										 |  |  |         co_linetable = self.pyop_field('co_linetable').proxyval(set()) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  |         # Initialize lineno to co_firstlineno as per PyCode_Addr2Line | 
					
						
							|  |  |  |         # not 0, as lnotab_notes.txt has it: | 
					
						
							|  |  |  |         lineno = int_from_int(self.field('co_firstlineno')) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-12 09:43:29 +00:00
										 |  |  |         if addrq < 0: | 
					
						
							|  |  |  |             return lineno | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         addr = 0 | 
					
						
							| 
									
										
										
										
											2022-04-21 16:10:37 +01:00
										 |  |  |         for addr, end_addr, line in parse_location_table(lineno, co_linetable): | 
					
						
							|  |  |  |             if addr <= addrq and end_addr > addrq: | 
					
						
							|  |  |  |                 return line | 
					
						
							| 
									
										
										
										
											2020-11-12 09:43:29 +00:00
										 |  |  |         assert False, "Unreachable" | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-13 14:19:34 +01:00
										 |  |  | def items_from_keys_and_values(keys, values): | 
					
						
							|  |  |  |     entries, nentries = PyDictObjectPtr._get_entries(keys) | 
					
						
							|  |  |  |     for i in safe_range(nentries): | 
					
						
							|  |  |  |         ep = entries[i] | 
					
						
							|  |  |  |         pyop_value = PyObjectPtr.from_pyobject_ptr(values[i]) | 
					
						
							|  |  |  |         if not pyop_value.is_null(): | 
					
						
							|  |  |  |             pyop_key = PyObjectPtr.from_pyobject_ptr(ep['me_key']) | 
					
						
							|  |  |  |             yield (pyop_key, pyop_value) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PyKeysValuesPair: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def __init__(self, keys, values): | 
					
						
							|  |  |  |         self.keys = keys | 
					
						
							|  |  |  |         self.values = values | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def iteritems(self): | 
					
						
							|  |  |  |         return items_from_keys_and_values(self.keys, self.values) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def proxyval(self, visited): | 
					
						
							|  |  |  |         result = {} | 
					
						
							|  |  |  |         for pyop_key, pyop_value in self.iteritems(): | 
					
						
							|  |  |  |             proxy_key = pyop_key.proxyval(visited) | 
					
						
							|  |  |  |             proxy_value = pyop_value.proxyval(visited) | 
					
						
							|  |  |  |             result[proxy_key] = proxy_value | 
					
						
							|  |  |  |         return result | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | class PyDictObjectPtr(PyObjectPtr): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Class wrapping a gdb.Value that's a PyDictObject* i.e. a dict instance | 
					
						
							|  |  |  |     within the process being debugged. | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     _typename = 'PyDictObject' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def iteritems(self): | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         Yields a sequence of (PyObjectPtr key, PyObjectPtr value) pairs, | 
					
						
							| 
									
										
										
										
											2013-08-26 01:32:56 +03:00
										 |  |  |         analogous to dict.iteritems() | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         '''
 | 
					
						
							| 
									
										
										
										
											2012-04-23 11:24:50 -04:00
										 |  |  |         keys = self.field('ma_keys') | 
					
						
							|  |  |  |         values = self.field('ma_values') | 
					
						
							| 
									
										
										
										
											2022-03-15 17:04:11 +09:00
										 |  |  |         has_values = int(values) | 
					
						
							| 
									
										
										
										
											2021-10-06 13:19:53 +01:00
										 |  |  |         if has_values: | 
					
						
							|  |  |  |             values = values['values'] | 
					
						
							| 
									
										
										
										
											2021-10-13 14:19:34 +01:00
										 |  |  |         if has_values: | 
					
						
							|  |  |  |             for item in items_from_keys_and_values(keys, values): | 
					
						
							|  |  |  |                 yield item | 
					
						
							|  |  |  |             return | 
					
						
							| 
									
										
										
										
											2016-11-22 19:40:58 +09:00
										 |  |  |         entries, nentries = self._get_entries(keys) | 
					
						
							|  |  |  |         for i in safe_range(nentries): | 
					
						
							|  |  |  |             ep = entries[i] | 
					
						
							| 
									
										
										
										
											2021-10-13 14:19:34 +01:00
										 |  |  |             pyop_value = PyObjectPtr.from_pyobject_ptr(ep['me_value']) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |             if not pyop_value.is_null(): | 
					
						
							|  |  |  |                 pyop_key = PyObjectPtr.from_pyobject_ptr(ep['me_key']) | 
					
						
							|  |  |  |                 yield (pyop_key, pyop_value) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def proxyval(self, visited): | 
					
						
							|  |  |  |         # Guard against infinite loops: | 
					
						
							|  |  |  |         if self.as_address() in visited: | 
					
						
							|  |  |  |             return ProxyAlreadyVisited('{...}') | 
					
						
							|  |  |  |         visited.add(self.as_address()) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         result = {} | 
					
						
							|  |  |  |         for pyop_key, pyop_value in self.iteritems(): | 
					
						
							|  |  |  |             proxy_key = pyop_key.proxyval(visited) | 
					
						
							|  |  |  |             proxy_value = pyop_value.proxyval(visited) | 
					
						
							|  |  |  |             result[proxy_key] = proxy_value | 
					
						
							|  |  |  |         return result | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def write_repr(self, out, visited): | 
					
						
							|  |  |  |         # Guard against infinite loops: | 
					
						
							|  |  |  |         if self.as_address() in visited: | 
					
						
							|  |  |  |             out.write('{...}') | 
					
						
							|  |  |  |             return | 
					
						
							|  |  |  |         visited.add(self.as_address()) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         out.write('{') | 
					
						
							|  |  |  |         first = True | 
					
						
							|  |  |  |         for pyop_key, pyop_value in self.iteritems(): | 
					
						
							|  |  |  |             if not first: | 
					
						
							|  |  |  |                 out.write(', ') | 
					
						
							|  |  |  |             first = False | 
					
						
							|  |  |  |             pyop_key.write_repr(out, visited) | 
					
						
							|  |  |  |             out.write(': ') | 
					
						
							|  |  |  |             pyop_value.write_repr(out, visited) | 
					
						
							|  |  |  |         out.write('}') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-13 14:19:34 +01:00
										 |  |  |     @staticmethod | 
					
						
							|  |  |  |     def _get_entries(keys): | 
					
						
							| 
									
										
										
										
											2016-11-22 13:09:39 +01:00
										 |  |  |         dk_nentries = int(keys['dk_nentries']) | 
					
						
							| 
									
										
										
										
											2021-05-28 09:54:10 +01:00
										 |  |  |         dk_size = 1<<int(keys['dk_log2_size']) | 
					
						
							| 
									
										
										
										
											2016-11-22 19:40:58 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if dk_size <= 0xFF: | 
					
						
							|  |  |  |             offset = dk_size | 
					
						
							|  |  |  |         elif dk_size <= 0xFFFF: | 
					
						
							|  |  |  |             offset = 2 * dk_size | 
					
						
							|  |  |  |         elif dk_size <= 0xFFFFFFFF: | 
					
						
							|  |  |  |             offset = 4 * dk_size | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             offset = 8 * dk_size | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-20 11:32:08 -07:00
										 |  |  |         ent_addr = keys['dk_indices'].address | 
					
						
							| 
									
										
										
										
											2016-11-22 13:09:39 +01:00
										 |  |  |         ent_addr = ent_addr.cast(_type_unsigned_char_ptr()) + offset | 
					
						
							| 
									
										
										
										
											2022-03-02 08:09:28 +09:00
										 |  |  |         if int(keys['dk_kind']) == 0:  # DICT_KEYS_GENERAL | 
					
						
							|  |  |  |             ent_ptr_t = gdb.lookup_type('PyDictKeyEntry').pointer() | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             ent_ptr_t = gdb.lookup_type('PyDictUnicodeEntry').pointer() | 
					
						
							| 
									
										
										
										
											2016-11-22 13:09:39 +01:00
										 |  |  |         ent_addr = ent_addr.cast(ent_ptr_t) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return ent_addr, dk_nentries | 
					
						
							| 
									
										
										
										
											2016-11-22 19:40:58 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | class PyListObjectPtr(PyObjectPtr): | 
					
						
							|  |  |  |     _typename = 'PyListObject' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def __getitem__(self, i): | 
					
						
							|  |  |  |         # Get the gdb.Value for the (PyObject*) with the given index: | 
					
						
							|  |  |  |         field_ob_item = self.field('ob_item') | 
					
						
							|  |  |  |         return field_ob_item[i] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def proxyval(self, visited): | 
					
						
							|  |  |  |         # Guard against infinite loops: | 
					
						
							|  |  |  |         if self.as_address() in visited: | 
					
						
							|  |  |  |             return ProxyAlreadyVisited('[...]') | 
					
						
							|  |  |  |         visited.add(self.as_address()) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         result = [PyObjectPtr.from_pyobject_ptr(self[i]).proxyval(visited) | 
					
						
							|  |  |  |                   for i in safe_range(int_from_int(self.field('ob_size')))] | 
					
						
							|  |  |  |         return result | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def write_repr(self, out, visited): | 
					
						
							|  |  |  |         # Guard against infinite loops: | 
					
						
							|  |  |  |         if self.as_address() in visited: | 
					
						
							|  |  |  |             out.write('[...]') | 
					
						
							|  |  |  |             return | 
					
						
							|  |  |  |         visited.add(self.as_address()) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         out.write('[') | 
					
						
							|  |  |  |         for i in safe_range(int_from_int(self.field('ob_size'))): | 
					
						
							|  |  |  |             if i > 0: | 
					
						
							|  |  |  |                 out.write(', ') | 
					
						
							|  |  |  |             element = PyObjectPtr.from_pyobject_ptr(self[i]) | 
					
						
							|  |  |  |             element.write_repr(out, visited) | 
					
						
							|  |  |  |         out.write(']') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PyLongObjectPtr(PyObjectPtr): | 
					
						
							|  |  |  |     _typename = 'PyLongObject' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def proxyval(self, visited): | 
					
						
							|  |  |  |         '''
 | 
					
						
							| 
									
										
										
										
											2024-05-02 13:57:45 +05:00
										 |  |  |         Python's Include/longinterpr.h has this declaration: | 
					
						
							| 
									
										
										
										
											2023-03-22 14:49:51 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |             typedef struct _PyLongValue { | 
					
						
							|  |  |  |                 uintptr_t lv_tag; /* Number of digits, sign and flags */ | 
					
						
							|  |  |  |                 digit ob_digit[1]; | 
					
						
							|  |  |  |             } _PyLongValue; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             struct _longobject { | 
					
						
							|  |  |  |                 PyObject_HEAD | 
					
						
							| 
									
										
										
										
											2024-05-02 13:57:45 +05:00
										 |  |  |                 _PyLongValue long_value; | 
					
						
							| 
									
										
										
										
											2023-03-22 14:49:51 +00:00
										 |  |  |             }; | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  |         with this description: | 
					
						
							|  |  |  |             The absolute value of a number is equal to | 
					
						
							| 
									
										
										
										
											2024-05-02 13:57:45 +05:00
										 |  |  |                 SUM(for i=0 through ndigits-1) ob_digit[i] * 2**(PyLong_SHIFT*i) | 
					
						
							|  |  |  |             The sign of the value is stored in the lower 2 bits of lv_tag. | 
					
						
							|  |  |  |                 - 0: Positive | 
					
						
							|  |  |  |                 - 1: Zero | 
					
						
							|  |  |  |                 - 2: Negative | 
					
						
							|  |  |  |             The third lowest bit of lv_tag is reserved for an immortality flag, but is | 
					
						
							|  |  |  |             not currently used. | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  |         where SHIFT can be either: | 
					
						
							|  |  |  |             #define PyLong_SHIFT        30 | 
					
						
							|  |  |  |             #define PyLong_SHIFT        15 | 
					
						
							|  |  |  |         '''
 | 
					
						
							| 
									
										
										
										
											2023-03-22 14:49:51 +00:00
										 |  |  |         long_value = self.field('long_value') | 
					
						
							|  |  |  |         lv_tag = int(long_value['lv_tag']) | 
					
						
							|  |  |  |         size = lv_tag >> 3 | 
					
						
							|  |  |  |         if size == 0: | 
					
						
							| 
									
										
										
										
											2013-11-23 17:40:36 +01:00
										 |  |  |             return 0 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-22 14:49:51 +00:00
										 |  |  |         ob_digit = long_value['ob_digit'] | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  |         if gdb.lookup_type('digit').sizeof == 2: | 
					
						
							| 
									
										
										
										
											2013-11-23 17:40:36 +01:00
										 |  |  |             SHIFT = 15 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         else: | 
					
						
							| 
									
										
										
										
											2013-11-23 17:40:36 +01:00
										 |  |  |             SHIFT = 30 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-15 17:04:11 +09:00
										 |  |  |         digits = [int(ob_digit[i]) * 2**(SHIFT*i) | 
					
						
							| 
									
										
										
										
											2023-03-22 14:49:51 +00:00
										 |  |  |                   for i in safe_range(size)] | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         result = sum(digits) | 
					
						
							| 
									
										
										
										
											2023-03-22 14:49:51 +00:00
										 |  |  |         if (lv_tag & 3) == 2: | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |             result = -result | 
					
						
							|  |  |  |         return result | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  |     def write_repr(self, out, visited): | 
					
						
							| 
									
										
										
										
											2023-06-14 12:30:22 +02:00
										 |  |  |         # Write this out as a Python int literal | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  |         proxy = self.proxyval(visited) | 
					
						
							|  |  |  |         out.write("%s" % proxy) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PyBoolObjectPtr(PyLongObjectPtr): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Class wrapping a gdb.Value that's a PyBoolObject* i.e. one of the two | 
					
						
							|  |  |  |     <bool> instances (Py_True/Py_False) within the process being debugged. | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     def proxyval(self, visited): | 
					
						
							|  |  |  |         if PyLongObjectPtr.proxyval(self, visited): | 
					
						
							|  |  |  |             return True | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             return False | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  | class PyNoneStructPtr(PyObjectPtr): | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     Class wrapping a gdb.Value that's a PyObject* pointing to the | 
					
						
							|  |  |  |     singleton (we hope) _Py_NoneStruct with ob_type PyNone_Type | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     _typename = 'PyObject' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def proxyval(self, visited): | 
					
						
							|  |  |  |         return None | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PyFrameObjectPtr(PyObjectPtr): | 
					
						
							|  |  |  |     _typename = 'PyFrameObject' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-19 13:42:24 +01:00
										 |  |  |     def __init__(self, gdbval, cast_to=None): | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         PyObjectPtr.__init__(self, gdbval, cast_to) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-26 11:22:16 +01:00
										 |  |  |         if not self.is_optimized_out(): | 
					
						
							|  |  |  |             self._frame = PyFramePtr(self.field('f_frame')) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def iter_locals(self): | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         Yield a sequence of (name,value) pairs of PyObjectPtr instances, for | 
					
						
							|  |  |  |         the local variables of this frame | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         if self.is_optimized_out(): | 
					
						
							|  |  |  |             return | 
					
						
							|  |  |  |         return self._frame.iter_locals() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def iter_globals(self): | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         Yield a sequence of (name,value) pairs of PyObjectPtr instances, for | 
					
						
							|  |  |  |         the global variables of this frame | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         if self.is_optimized_out(): | 
					
						
							|  |  |  |             return () | 
					
						
							|  |  |  |         return self._frame.iter_globals() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def iter_builtins(self): | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         Yield a sequence of (name,value) pairs of PyObjectPtr instances, for | 
					
						
							|  |  |  |         the builtin variables | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         if self.is_optimized_out(): | 
					
						
							|  |  |  |             return () | 
					
						
							|  |  |  |         return self._frame.iter_builtins() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def get_var_by_name(self, name): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if self.is_optimized_out(): | 
					
						
							|  |  |  |             return None, None | 
					
						
							|  |  |  |         return self._frame.get_var_by_name(name) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def filename(self): | 
					
						
							|  |  |  |         '''Get the path of the current Python source file, as a string''' | 
					
						
							|  |  |  |         if self.is_optimized_out(): | 
					
						
							|  |  |  |             return FRAME_INFO_OPTIMIZED_OUT | 
					
						
							|  |  |  |         return self._frame.filename() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def current_line_num(self): | 
					
						
							|  |  |  |         '''Get current line number as an integer (1-based)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         Translated from PyFrame_GetLineNumber and PyCode_Addr2Line | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         See Objects/lnotab_notes.txt | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         if self.is_optimized_out(): | 
					
						
							|  |  |  |             return None | 
					
						
							|  |  |  |         return self._frame.current_line_num() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def current_line(self): | 
					
						
							|  |  |  |         '''Get the text of the current source line as a string, with a trailing
 | 
					
						
							|  |  |  |         newline character'''
 | 
					
						
							|  |  |  |         if self.is_optimized_out(): | 
					
						
							|  |  |  |             return FRAME_INFO_OPTIMIZED_OUT | 
					
						
							|  |  |  |         return self._frame.current_line() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def write_repr(self, out, visited): | 
					
						
							|  |  |  |         if self.is_optimized_out(): | 
					
						
							|  |  |  |             out.write(FRAME_INFO_OPTIMIZED_OUT) | 
					
						
							|  |  |  |             return | 
					
						
							|  |  |  |         return self._frame.write_repr(out, visited) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def print_traceback(self): | 
					
						
							|  |  |  |         if self.is_optimized_out(): | 
					
						
							|  |  |  |             sys.stdout.write('  %s\n' % FRAME_INFO_OPTIMIZED_OUT) | 
					
						
							|  |  |  |             return | 
					
						
							|  |  |  |         return self._frame.print_traceback() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PyFramePtr: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def __init__(self, gdbval): | 
					
						
							|  |  |  |         self._gdbval = gdbval | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         if not self.is_optimized_out(): | 
					
						
							| 
									
										
										
										
											2023-06-14 13:46:37 +01:00
										 |  |  |             try: | 
					
						
							|  |  |  |                 self.co = self._f_code() | 
					
						
							|  |  |  |                 self.co_name = self.co.pyop_field('co_name') | 
					
						
							|  |  |  |                 self.co_filename = self.co.pyop_field('co_filename') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 self.f_lasti = self._f_lasti() | 
					
						
							|  |  |  |                 self.co_nlocals = int_from_int(self.co.field('co_nlocals')) | 
					
						
							|  |  |  |                 pnames = self.co.field('co_localsplusnames') | 
					
						
							|  |  |  |                 self.co_localsplusnames = PyTupleObjectPtr.from_pyobject_ptr(pnames) | 
					
						
							|  |  |  |                 self._is_code = True | 
					
						
							|  |  |  |             except: | 
					
						
							|  |  |  |                 self._is_code = False | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-26 11:22:16 +01:00
										 |  |  |     def is_optimized_out(self): | 
					
						
							|  |  |  |         return self._gdbval.is_optimized_out | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |     def iter_locals(self): | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         Yield a sequence of (name,value) pairs of PyObjectPtr instances, for | 
					
						
							|  |  |  |         the local variables of this frame | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         if self.is_optimized_out(): | 
					
						
							|  |  |  |             return | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-25 13:44:20 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-26 11:22:16 +01:00
										 |  |  |         obj_ptr_ptr = gdb.lookup_type("PyObject").pointer().pointer() | 
					
						
							| 
									
										
										
										
											2021-08-25 13:44:20 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-12 12:37:06 -04:00
										 |  |  |         localsplus = self._gdbval["localsplus"] | 
					
						
							| 
									
										
										
										
											2021-08-25 13:44:20 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         for i in safe_range(self.co_nlocals): | 
					
						
							| 
									
										
										
										
											2021-07-26 11:22:16 +01:00
										 |  |  |             pyop_value = PyObjectPtr.from_pyobject_ptr(localsplus[i]) | 
					
						
							| 
									
										
										
										
											2021-06-07 12:22:26 -06:00
										 |  |  |             if pyop_value.is_null(): | 
					
						
							|  |  |  |                 continue | 
					
						
							|  |  |  |             pyop_name = PyObjectPtr.from_pyobject_ptr(self.co_localsplusnames[i]) | 
					
						
							|  |  |  |             yield (pyop_name, pyop_value) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-26 11:22:16 +01:00
										 |  |  |     def _f_special(self, name, convert=PyObjectPtr.from_pyobject_ptr): | 
					
						
							|  |  |  |         return convert(self._gdbval[name]) | 
					
						
							| 
									
										
										
										
											2021-06-18 11:00:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-21 10:57:35 +01:00
										 |  |  |     def _f_globals(self): | 
					
						
							| 
									
										
										
										
											2021-07-26 11:22:16 +01:00
										 |  |  |         return self._f_special("f_globals") | 
					
						
							| 
									
										
										
										
											2021-06-18 11:00:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def _f_builtins(self): | 
					
						
							| 
									
										
										
										
											2021-07-26 11:22:16 +01:00
										 |  |  |         return self._f_special("f_builtins") | 
					
						
							| 
									
										
										
										
											2021-06-18 11:00:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def _f_code(self): | 
					
						
							| 
									
										
										
										
											2023-06-14 13:46:37 +01:00
										 |  |  |         return self._f_special("f_executable", PyCodeObjectPtr.from_pyobject_ptr) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def _f_executable(self): | 
					
						
							|  |  |  |         return self._f_special("f_executable") | 
					
						
							| 
									
										
										
										
											2021-07-26 11:22:16 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def _f_nlocalsplus(self): | 
					
						
							|  |  |  |         return self._f_special("nlocalsplus", int_from_int) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def _f_lasti(self): | 
					
						
							| 
									
										
										
										
											2022-04-07 12:31:01 -07:00
										 |  |  |         codeunit_p = gdb.lookup_type("_Py_CODEUNIT").pointer() | 
					
						
							| 
									
										
										
										
											2023-10-26 14:43:10 +01:00
										 |  |  |         instr_ptr = self._gdbval["instr_ptr"] | 
					
						
							| 
									
										
										
										
											2022-04-07 12:31:01 -07:00
										 |  |  |         first_instr = self._f_code().field("co_code_adaptive").cast(codeunit_p) | 
					
						
							| 
									
										
										
										
											2023-10-26 14:43:10 +01:00
										 |  |  |         return int(instr_ptr - first_instr) | 
					
						
							| 
									
										
										
										
											2021-07-26 11:22:16 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-10 04:34:57 -08:00
										 |  |  |     def is_shim(self): | 
					
						
							|  |  |  |         return self._f_special("owner", int) == FRAME_OWNED_BY_CSTACK | 
					
						
							| 
									
										
										
										
											2021-10-09 16:51:30 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def previous(self): | 
					
						
							|  |  |  |         return self._f_special("previous", PyFramePtr) | 
					
						
							| 
									
										
										
										
											2021-05-21 10:57:35 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |     def iter_globals(self): | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         Yield a sequence of (name,value) pairs of PyObjectPtr instances, for | 
					
						
							|  |  |  |         the global variables of this frame | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         if self.is_optimized_out(): | 
					
						
							| 
									
										
										
										
											2011-12-19 13:42:24 +01:00
										 |  |  |             return () | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-21 10:57:35 +01:00
										 |  |  |         pyop_globals = self._f_globals() | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         return pyop_globals.iteritems() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def iter_builtins(self): | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         Yield a sequence of (name,value) pairs of PyObjectPtr instances, for | 
					
						
							|  |  |  |         the builtin variables | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         if self.is_optimized_out(): | 
					
						
							| 
									
										
										
										
											2011-12-19 13:42:24 +01:00
										 |  |  |             return () | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-21 10:57:35 +01:00
										 |  |  |         pyop_builtins = self._f_builtins() | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         return pyop_builtins.iteritems() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def get_var_by_name(self, name): | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         Look for the named local variable, returning a (PyObjectPtr, scope) pair | 
					
						
							|  |  |  |         where scope is a string 'local', 'global', 'builtin' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         If not found, return (None, None) | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         for pyop_name, pyop_value in self.iter_locals(): | 
					
						
							|  |  |  |             if name == pyop_name.proxyval(set()): | 
					
						
							|  |  |  |                 return pyop_value, 'local' | 
					
						
							|  |  |  |         for pyop_name, pyop_value in self.iter_globals(): | 
					
						
							|  |  |  |             if name == pyop_name.proxyval(set()): | 
					
						
							|  |  |  |                 return pyop_value, 'global' | 
					
						
							|  |  |  |         for pyop_name, pyop_value in self.iter_builtins(): | 
					
						
							|  |  |  |             if name == pyop_name.proxyval(set()): | 
					
						
							|  |  |  |                 return pyop_value, 'builtin' | 
					
						
							|  |  |  |         return None, None | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def filename(self): | 
					
						
							|  |  |  |         '''Get the path of the current Python source file, as a string''' | 
					
						
							|  |  |  |         if self.is_optimized_out(): | 
					
						
							| 
									
										
										
										
											2020-03-20 08:23:26 +01:00
										 |  |  |             return FRAME_INFO_OPTIMIZED_OUT | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         return self.co_filename.proxyval(set()) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def current_line_num(self): | 
					
						
							|  |  |  |         '''Get current line number as an integer (1-based)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         Translated from PyFrame_GetLineNumber and PyCode_Addr2Line | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         See Objects/lnotab_notes.txt | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         if self.is_optimized_out(): | 
					
						
							|  |  |  |             return None | 
					
						
							| 
									
										
										
										
											2018-10-15 23:19:57 +02:00
										 |  |  |         try: | 
					
						
							| 
									
										
										
										
											2022-04-21 16:10:37 +01:00
										 |  |  |             return self.co.addr2line(self.f_lasti) | 
					
						
							|  |  |  |         except Exception as ex: | 
					
						
							| 
									
										
										
										
											2018-10-15 23:19:57 +02:00
										 |  |  |             # bpo-34989: addr2line() is a complex function, it can fail in many | 
					
						
							|  |  |  |             # ways. For example, it fails with a TypeError on "FakeRepr" if | 
					
						
							|  |  |  |             # gdb fails to load debug symbols. Use a catch-all "except | 
					
						
							|  |  |  |             # Exception" to make the whole function safe. The caller has to | 
					
						
							|  |  |  |             # handle None anyway for optimized Python. | 
					
						
							|  |  |  |             return None | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  |     def current_line(self): | 
					
						
							|  |  |  |         '''Get the text of the current source line as a string, with a trailing
 | 
					
						
							|  |  |  |         newline character'''
 | 
					
						
							|  |  |  |         if self.is_optimized_out(): | 
					
						
							| 
									
										
										
										
											2020-03-20 08:23:26 +01:00
										 |  |  |             return FRAME_INFO_OPTIMIZED_OUT | 
					
						
							| 
									
										
										
										
											2018-10-15 23:19:57 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         lineno = self.current_line_num() | 
					
						
							|  |  |  |         if lineno is None: | 
					
						
							|  |  |  |             return '(failed to get frame line number)' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-17 19:35:30 +00:00
										 |  |  |         filename = self.filename() | 
					
						
							| 
									
										
										
										
											2011-07-01 12:57:44 +02:00
										 |  |  |         try: | 
					
						
							| 
									
										
										
										
											2023-06-14 12:30:22 +02:00
										 |  |  |             with open(os.fsencode(filename), 'r', encoding="utf-8") as fp: | 
					
						
							| 
									
										
										
										
											2018-10-15 23:19:57 +02:00
										 |  |  |                 lines = fp.readlines() | 
					
						
							| 
									
										
										
										
											2011-07-01 12:57:44 +02:00
										 |  |  |         except IOError: | 
					
						
							|  |  |  |             return None | 
					
						
							| 
									
										
										
										
											2018-10-15 23:19:57 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             # Convert from 1-based current_line_num to 0-based list offset | 
					
						
							|  |  |  |             return lines[lineno - 1] | 
					
						
							|  |  |  |         except IndexError: | 
					
						
							|  |  |  |             return None | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  |     def write_repr(self, out, visited): | 
					
						
							|  |  |  |         if self.is_optimized_out(): | 
					
						
							| 
									
										
										
										
											2020-03-20 08:23:26 +01:00
										 |  |  |             out.write(FRAME_INFO_OPTIMIZED_OUT) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |             return | 
					
						
							| 
									
										
										
										
											2018-10-15 23:19:57 +02:00
										 |  |  |         lineno = self.current_line_num() | 
					
						
							|  |  |  |         lineno = str(lineno) if lineno is not None else "?" | 
					
						
							|  |  |  |         out.write('Frame 0x%x, for file %s, line %s, in %s (' | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |                   % (self.as_address(), | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  |                      self.co_filename.proxyval(visited), | 
					
						
							| 
									
										
										
										
											2018-10-15 23:19:57 +02:00
										 |  |  |                      lineno, | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  |                      self.co_name.proxyval(visited))) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         first = True | 
					
						
							|  |  |  |         for pyop_name, pyop_value in self.iter_locals(): | 
					
						
							|  |  |  |             if not first: | 
					
						
							|  |  |  |                 out.write(', ') | 
					
						
							|  |  |  |             first = False | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             out.write(pyop_name.proxyval(visited)) | 
					
						
							|  |  |  |             out.write('=') | 
					
						
							|  |  |  |             pyop_value.write_repr(out, visited) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         out.write(')') | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-26 11:22:16 +01:00
										 |  |  |     def as_address(self): | 
					
						
							| 
									
										
										
										
											2022-03-15 17:04:11 +09:00
										 |  |  |         return int(self._gdbval) | 
					
						
							| 
									
										
										
										
											2021-07-26 11:22:16 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-13 17:40:15 +02:00
										 |  |  |     def print_traceback(self): | 
					
						
							|  |  |  |         if self.is_optimized_out(): | 
					
						
							| 
									
										
										
										
											2020-03-20 08:23:26 +01:00
										 |  |  |             sys.stdout.write('  %s\n' % FRAME_INFO_OPTIMIZED_OUT) | 
					
						
							| 
									
										
										
										
											2011-12-19 13:42:24 +01:00
										 |  |  |             return | 
					
						
							| 
									
										
										
										
											2011-05-13 17:40:15 +02:00
										 |  |  |         visited = set() | 
					
						
							| 
									
										
										
										
											2018-10-15 23:19:57 +02:00
										 |  |  |         lineno = self.current_line_num() | 
					
						
							|  |  |  |         lineno = str(lineno) if lineno is not None else "?" | 
					
						
							|  |  |  |         sys.stdout.write('  File "%s", line %s, in %s\n' | 
					
						
							| 
									
										
										
										
											2011-05-13 17:40:15 +02:00
										 |  |  |                   % (self.co_filename.proxyval(visited), | 
					
						
							| 
									
										
										
										
											2018-10-15 23:19:57 +02:00
										 |  |  |                      lineno, | 
					
						
							| 
									
										
										
										
											2011-05-13 17:40:15 +02:00
										 |  |  |                      self.co_name.proxyval(visited))) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-26 11:22:16 +01:00
										 |  |  |     def get_truncated_repr(self, maxlen): | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         Get a repr-like string for the data, but truncate it at "maxlen" bytes | 
					
						
							|  |  |  |         (ending the object graph traversal as soon as you do) | 
					
						
							|  |  |  |         '''
 | 
					
						
							|  |  |  |         out = TruncatedStringIO(maxlen) | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             self.write_repr(out, set()) | 
					
						
							|  |  |  |         except StringTruncated: | 
					
						
							|  |  |  |             # Truncation occurred: | 
					
						
							|  |  |  |             return out.getvalue() + '...(truncated)' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # No truncation occurred: | 
					
						
							|  |  |  |         return out.getvalue() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | class PySetObjectPtr(PyObjectPtr): | 
					
						
							|  |  |  |     _typename = 'PySetObject' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-08-24 21:07:07 +02:00
										 |  |  |     @classmethod | 
					
						
							|  |  |  |     def _dummy_key(self): | 
					
						
							|  |  |  |         return gdb.lookup_global_symbol('_PySet_Dummy').value() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def __iter__(self): | 
					
						
							|  |  |  |         dummy_ptr = self._dummy_key() | 
					
						
							|  |  |  |         table = self.field('table') | 
					
						
							|  |  |  |         for i in safe_range(self.field('mask') + 1): | 
					
						
							|  |  |  |             setentry = table[i] | 
					
						
							|  |  |  |             key = setentry['key'] | 
					
						
							|  |  |  |             if key != 0 and key != dummy_ptr: | 
					
						
							|  |  |  |                 yield PyObjectPtr.from_pyobject_ptr(key) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |     def proxyval(self, visited): | 
					
						
							|  |  |  |         # Guard against infinite loops: | 
					
						
							|  |  |  |         if self.as_address() in visited: | 
					
						
							|  |  |  |             return ProxyAlreadyVisited('%s(...)' % self.safe_tp_name()) | 
					
						
							|  |  |  |         visited.add(self.as_address()) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-08-24 21:07:07 +02:00
										 |  |  |         members = (key.proxyval(visited) for key in self) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         if self.safe_tp_name() == 'frozenset': | 
					
						
							|  |  |  |             return frozenset(members) | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             return set(members) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def write_repr(self, out, visited): | 
					
						
							| 
									
										
										
										
											2023-06-14 12:30:22 +02:00
										 |  |  |         # Emulate Python's set_repr | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  |         tp_name = self.safe_tp_name() | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  |         # Guard against infinite loops: | 
					
						
							|  |  |  |         if self.as_address() in visited: | 
					
						
							|  |  |  |             out.write('(...)') | 
					
						
							|  |  |  |             return | 
					
						
							|  |  |  |         visited.add(self.as_address()) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-14 12:30:22 +02:00
										 |  |  |         # Python's set_repr special-cases the empty set: | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  |         if not self.field('used'): | 
					
						
							|  |  |  |             out.write(tp_name) | 
					
						
							|  |  |  |             out.write('()') | 
					
						
							|  |  |  |             return | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-14 12:30:22 +02:00
										 |  |  |         # Python uses {} for set literals: | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  |         if tp_name != 'set': | 
					
						
							|  |  |  |             out.write(tp_name) | 
					
						
							|  |  |  |             out.write('(') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         out.write('{') | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         first = True | 
					
						
							| 
									
										
										
										
											2013-08-24 21:07:07 +02:00
										 |  |  |         for key in self: | 
					
						
							|  |  |  |             if not first: | 
					
						
							|  |  |  |                 out.write(', ') | 
					
						
							|  |  |  |             first = False | 
					
						
							|  |  |  |             key.write_repr(out, visited) | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  |         out.write('}') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if tp_name != 'set': | 
					
						
							|  |  |  |             out.write(')') | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-21 13:53:05 +00:00
										 |  |  | class PyBytesObjectPtr(PyObjectPtr): | 
					
						
							|  |  |  |     _typename = 'PyBytesObject' | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  |     def __str__(self): | 
					
						
							|  |  |  |         field_ob_size = self.field('ob_size') | 
					
						
							|  |  |  |         field_ob_sval = self.field('ob_sval') | 
					
						
							| 
									
										
										
										
											2016-04-20 18:07:21 +02:00
										 |  |  |         char_ptr = field_ob_sval.address.cast(_type_unsigned_char_ptr()) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         return ''.join([chr(char_ptr[i]) for i in safe_range(field_ob_size)]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def proxyval(self, visited): | 
					
						
							|  |  |  |         return str(self) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  |     def write_repr(self, out, visited): | 
					
						
							| 
									
										
										
										
											2023-06-14 12:30:22 +02:00
										 |  |  |         # Write this out as a Python bytes literal, i.e. with a "b" prefix | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-14 12:30:22 +02:00
										 |  |  |         # Get a PyStringObject* within the Python gdb process: | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  |         proxy = self.proxyval(visited) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-14 12:30:22 +02:00
										 |  |  |         # Transliteration of Python's Objects/bytesobject.c:PyBytes_Repr | 
					
						
							|  |  |  |         # to Python code: | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  |         quote = "'" | 
					
						
							|  |  |  |         if "'" in proxy and not '"' in proxy: | 
					
						
							|  |  |  |             quote = '"' | 
					
						
							|  |  |  |         out.write('b') | 
					
						
							|  |  |  |         out.write(quote) | 
					
						
							|  |  |  |         for byte in proxy: | 
					
						
							|  |  |  |             if byte == quote or byte == '\\': | 
					
						
							|  |  |  |                 out.write('\\') | 
					
						
							|  |  |  |                 out.write(byte) | 
					
						
							|  |  |  |             elif byte == '\t': | 
					
						
							|  |  |  |                 out.write('\\t') | 
					
						
							|  |  |  |             elif byte == '\n': | 
					
						
							|  |  |  |                 out.write('\\n') | 
					
						
							|  |  |  |             elif byte == '\r': | 
					
						
							|  |  |  |                 out.write('\\r') | 
					
						
							|  |  |  |             elif byte < ' ' or ord(byte) >= 0x7f: | 
					
						
							|  |  |  |                 out.write('\\x') | 
					
						
							|  |  |  |                 out.write(hexdigits[(ord(byte) & 0xf0) >> 4]) | 
					
						
							|  |  |  |                 out.write(hexdigits[ord(byte) & 0xf]) | 
					
						
							|  |  |  |             else: | 
					
						
							|  |  |  |                 out.write(byte) | 
					
						
							|  |  |  |         out.write(quote) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | class PyTupleObjectPtr(PyObjectPtr): | 
					
						
							|  |  |  |     _typename = 'PyTupleObject' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def __getitem__(self, i): | 
					
						
							|  |  |  |         # Get the gdb.Value for the (PyObject*) with the given index: | 
					
						
							|  |  |  |         field_ob_item = self.field('ob_item') | 
					
						
							|  |  |  |         return field_ob_item[i] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def proxyval(self, visited): | 
					
						
							|  |  |  |         # Guard against infinite loops: | 
					
						
							|  |  |  |         if self.as_address() in visited: | 
					
						
							|  |  |  |             return ProxyAlreadyVisited('(...)') | 
					
						
							|  |  |  |         visited.add(self.as_address()) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-18 07:35:54 -07:00
										 |  |  |         result = tuple(PyObjectPtr.from_pyobject_ptr(self[i]).proxyval(visited) | 
					
						
							|  |  |  |                        for i in safe_range(int_from_int(self.field('ob_size')))) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         return result | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def write_repr(self, out, visited): | 
					
						
							|  |  |  |         # Guard against infinite loops: | 
					
						
							|  |  |  |         if self.as_address() in visited: | 
					
						
							|  |  |  |             out.write('(...)') | 
					
						
							|  |  |  |             return | 
					
						
							|  |  |  |         visited.add(self.as_address()) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         out.write('(') | 
					
						
							|  |  |  |         for i in safe_range(int_from_int(self.field('ob_size'))): | 
					
						
							|  |  |  |             if i > 0: | 
					
						
							|  |  |  |                 out.write(', ') | 
					
						
							|  |  |  |             element = PyObjectPtr.from_pyobject_ptr(self[i]) | 
					
						
							|  |  |  |             element.write_repr(out, visited) | 
					
						
							|  |  |  |         if self.field('ob_size') == 1: | 
					
						
							|  |  |  |             out.write(',)') | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             out.write(')') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PyTypeObjectPtr(PyObjectPtr): | 
					
						
							|  |  |  |     _typename = 'PyTypeObject' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  | def _unichr_is_printable(char): | 
					
						
							| 
									
										
										
										
											2023-06-14 12:30:22 +02:00
										 |  |  |     # Logic adapted from Python's Tools/unicode/makeunicodedata.py | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  |     if char == u" ": | 
					
						
							|  |  |  |         return True | 
					
						
							|  |  |  |     import unicodedata | 
					
						
							| 
									
										
										
										
											2010-09-08 20:57:48 +00:00
										 |  |  |     return unicodedata.category(char) not in ("C", "Z") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | class PyUnicodeObjectPtr(PyObjectPtr): | 
					
						
							|  |  |  |     _typename = 'PyUnicodeObject' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def proxyval(self, visited): | 
					
						
							| 
									
										
										
										
											2022-03-15 17:04:11 +09:00
										 |  |  |         compact = self.field('_base') | 
					
						
							|  |  |  |         ascii = compact['_base'] | 
					
						
							|  |  |  |         state = ascii['state'] | 
					
						
							|  |  |  |         is_compact_ascii = (int(state['ascii']) and int(state['compact'])) | 
					
						
							| 
									
										
										
										
											2022-05-12 14:48:38 +09:00
										 |  |  |         field_length = int(ascii['length']) | 
					
						
							|  |  |  |         if is_compact_ascii: | 
					
						
							|  |  |  |             field_str = ascii.address + 1 | 
					
						
							|  |  |  |         elif int(state['compact']): | 
					
						
							|  |  |  |             field_str = compact.address + 1 | 
					
						
							| 
									
										
										
										
											2011-09-28 07:41:54 +02:00
										 |  |  |         else: | 
					
						
							| 
									
										
										
										
											2022-05-12 14:48:38 +09:00
										 |  |  |             field_str = self.field('data')['any'] | 
					
						
							|  |  |  |         repr_kind = int(state['kind']) | 
					
						
							|  |  |  |         if repr_kind == 1: | 
					
						
							|  |  |  |             field_str = field_str.cast(_type_unsigned_char_ptr()) | 
					
						
							|  |  |  |         elif repr_kind == 2: | 
					
						
							|  |  |  |             field_str = field_str.cast(_type_unsigned_short_ptr()) | 
					
						
							|  |  |  |         elif repr_kind == 4: | 
					
						
							|  |  |  |             field_str = field_str.cast(_type_unsigned_int_ptr()) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-01 09:18:09 +02:00
										 |  |  |         # Gather a list of ints from the code point array; these are either | 
					
						
							| 
									
										
										
										
											2011-09-28 07:41:54 +02:00
										 |  |  |         # UCS-1, UCS-2 or UCS-4 code points: | 
					
						
							| 
									
										
										
										
											2023-06-01 09:18:09 +02:00
										 |  |  |         code_points = [int(field_str[i]) for i in safe_range(field_length)] | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  |         # Convert the int code points to unicode characters, and generate a | 
					
						
							| 
									
										
										
										
											2010-09-08 20:57:48 +00:00
										 |  |  |         # local unicode instance. | 
					
						
							| 
									
										
										
										
											2023-06-14 12:30:22 +02:00
										 |  |  |         result = ''.join(map(chr, code_points)) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         return result | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  |     def write_repr(self, out, visited): | 
					
						
							| 
									
										
										
										
											2023-06-14 12:30:22 +02:00
										 |  |  |         # Write this out as a Python str literal | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-14 12:30:22 +02:00
										 |  |  |         # Get a PyUnicodeObject* within the Python gdb process: | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  |         proxy = self.proxyval(visited) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-14 12:30:22 +02:00
										 |  |  |         # Transliteration of Python's Object/unicodeobject.c:unicode_repr | 
					
						
							|  |  |  |         # to Python: | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  |         if "'" in proxy and '"' not in proxy: | 
					
						
							|  |  |  |             quote = '"' | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             quote = "'" | 
					
						
							|  |  |  |         out.write(quote) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         i = 0 | 
					
						
							|  |  |  |         while i < len(proxy): | 
					
						
							|  |  |  |             ch = proxy[i] | 
					
						
							|  |  |  |             i += 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             # Escape quotes and backslashes | 
					
						
							|  |  |  |             if ch == quote or ch == '\\': | 
					
						
							|  |  |  |                 out.write('\\') | 
					
						
							|  |  |  |                 out.write(ch) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             #  Map special whitespace to '\t', \n', '\r' | 
					
						
							|  |  |  |             elif ch == '\t': | 
					
						
							|  |  |  |                 out.write('\\t') | 
					
						
							|  |  |  |             elif ch == '\n': | 
					
						
							|  |  |  |                 out.write('\\n') | 
					
						
							|  |  |  |             elif ch == '\r': | 
					
						
							|  |  |  |                 out.write('\\r') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             # Map non-printable US ASCII to '\xhh' */ | 
					
						
							| 
									
										
										
										
											2022-04-16 09:34:48 -05:00
										 |  |  |             elif ch < ' ' or ord(ch) == 0x7F: | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  |                 out.write('\\x') | 
					
						
							|  |  |  |                 out.write(hexdigits[(ord(ch) >> 4) & 0x000F]) | 
					
						
							|  |  |  |                 out.write(hexdigits[ord(ch) & 0x000F]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             # Copy ASCII characters as-is | 
					
						
							|  |  |  |             elif ord(ch) < 0x7F: | 
					
						
							|  |  |  |                 out.write(ch) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             # Non-ASCII characters | 
					
						
							|  |  |  |             else: | 
					
						
							| 
									
										
										
										
											2010-05-19 23:04:56 +00:00
										 |  |  |                 ucs = ch | 
					
						
							| 
									
										
										
										
											2010-09-08 20:57:48 +00:00
										 |  |  |                 ch2 = None | 
					
						
							| 
									
										
										
										
											2022-03-15 17:04:11 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  |                 printable = ucs.isprintable() | 
					
						
							| 
									
										
										
										
											2010-05-19 23:04:56 +00:00
										 |  |  |                 if printable: | 
					
						
							|  |  |  |                     try: | 
					
						
							|  |  |  |                         ucs.encode(ENCODING) | 
					
						
							|  |  |  |                     except UnicodeEncodeError: | 
					
						
							|  |  |  |                         printable = False | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |                 # Map Unicode whitespace and control characters | 
					
						
							|  |  |  |                 # (categories Z* and C* except ASCII space) | 
					
						
							| 
									
										
										
										
											2010-05-19 23:04:56 +00:00
										 |  |  |                 if not printable: | 
					
						
							| 
									
										
										
										
											2010-09-08 21:57:37 +00:00
										 |  |  |                     if ch2 is not None: | 
					
						
							| 
									
										
										
										
											2023-06-14 12:30:22 +02:00
										 |  |  |                         # Match Python's representation of non-printable | 
					
						
							| 
									
										
										
										
											2010-09-08 21:57:37 +00:00
										 |  |  |                         # wide characters. | 
					
						
							|  |  |  |                         code = (ord(ch) & 0x03FF) << 10 | 
					
						
							|  |  |  |                         code |= ord(ch2) & 0x03FF | 
					
						
							|  |  |  |                         code += 0x00010000 | 
					
						
							|  |  |  |                     else: | 
					
						
							|  |  |  |                         code = ord(ucs) | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |                     # Map 8-bit characters to '\\xhh' | 
					
						
							| 
									
										
										
										
											2010-05-19 23:04:56 +00:00
										 |  |  |                     if code <= 0xff: | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  |                         out.write('\\x') | 
					
						
							| 
									
										
										
										
											2010-05-19 23:04:56 +00:00
										 |  |  |                         out.write(hexdigits[(code >> 4) & 0x000F]) | 
					
						
							|  |  |  |                         out.write(hexdigits[code & 0x000F]) | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  |                     # Map 21-bit characters to '\U00xxxxxx' | 
					
						
							| 
									
										
										
										
											2010-05-19 23:04:56 +00:00
										 |  |  |                     elif code >= 0x10000: | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  |                         out.write('\\U') | 
					
						
							| 
									
										
										
										
											2010-05-19 23:04:56 +00:00
										 |  |  |                         out.write(hexdigits[(code >> 28) & 0x0000000F]) | 
					
						
							|  |  |  |                         out.write(hexdigits[(code >> 24) & 0x0000000F]) | 
					
						
							|  |  |  |                         out.write(hexdigits[(code >> 20) & 0x0000000F]) | 
					
						
							|  |  |  |                         out.write(hexdigits[(code >> 16) & 0x0000000F]) | 
					
						
							|  |  |  |                         out.write(hexdigits[(code >> 12) & 0x0000000F]) | 
					
						
							|  |  |  |                         out.write(hexdigits[(code >> 8) & 0x0000000F]) | 
					
						
							|  |  |  |                         out.write(hexdigits[(code >> 4) & 0x0000000F]) | 
					
						
							|  |  |  |                         out.write(hexdigits[code & 0x0000000F]) | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  |                     # Map 16-bit characters to '\uxxxx' | 
					
						
							|  |  |  |                     else: | 
					
						
							|  |  |  |                         out.write('\\u') | 
					
						
							| 
									
										
										
										
											2010-05-19 23:04:56 +00:00
										 |  |  |                         out.write(hexdigits[(code >> 12) & 0x000F]) | 
					
						
							|  |  |  |                         out.write(hexdigits[(code >> 8) & 0x000F]) | 
					
						
							|  |  |  |                         out.write(hexdigits[(code >> 4) & 0x000F]) | 
					
						
							|  |  |  |                         out.write(hexdigits[code & 0x000F]) | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  |                 else: | 
					
						
							|  |  |  |                     # Copy characters as-is | 
					
						
							|  |  |  |                     out.write(ch) | 
					
						
							| 
									
										
										
										
											2010-09-08 20:57:48 +00:00
										 |  |  |                     if ch2 is not None: | 
					
						
							| 
									
										
										
										
											2010-05-19 23:04:56 +00:00
										 |  |  |                         out.write(ch2) | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         out.write(quote) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-01 16:29:54 +01:00
										 |  |  | class wrapperobject(PyObjectPtr): | 
					
						
							|  |  |  |     _typename = 'wrapperobject' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def safe_name(self): | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             name = self.field('descr')['d_base']['name'].string() | 
					
						
							|  |  |  |             return repr(name) | 
					
						
							| 
									
										
										
										
											2018-06-14 22:34:52 +02:00
										 |  |  |         except (NullPyObjectPtr, RuntimeError, UnicodeDecodeError): | 
					
						
							| 
									
										
										
										
											2017-02-01 16:29:54 +01:00
										 |  |  |             return '<unknown name>' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def safe_tp_name(self): | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             return self.field('self')['ob_type']['tp_name'].string() | 
					
						
							| 
									
										
										
										
											2018-06-14 22:34:52 +02:00
										 |  |  |         except (NullPyObjectPtr, RuntimeError, UnicodeDecodeError): | 
					
						
							| 
									
										
										
										
											2017-02-01 16:29:54 +01:00
										 |  |  |             return '<unknown tp_name>' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def safe_self_addresss(self): | 
					
						
							|  |  |  |         try: | 
					
						
							| 
									
										
										
										
											2022-03-15 17:04:11 +09:00
										 |  |  |             address = int(self.field('self')) | 
					
						
							| 
									
										
										
										
											2017-02-01 16:29:54 +01:00
										 |  |  |             return '%#x' % address | 
					
						
							|  |  |  |         except (NullPyObjectPtr, RuntimeError): | 
					
						
							|  |  |  |             return '<failed to get self address>' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def proxyval(self, visited): | 
					
						
							|  |  |  |         name = self.safe_name() | 
					
						
							|  |  |  |         tp_name = self.safe_tp_name() | 
					
						
							|  |  |  |         self_address = self.safe_self_addresss() | 
					
						
							|  |  |  |         return ("<method-wrapper %s of %s object at %s>" | 
					
						
							|  |  |  |                 % (name, tp_name, self_address)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def write_repr(self, out, visited): | 
					
						
							|  |  |  |         proxy = self.proxyval(visited) | 
					
						
							|  |  |  |         out.write(proxy) | 
					
						
							| 
									
										
										
										
											2010-04-21 22:38:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  | def int_from_int(gdbval): | 
					
						
							| 
									
										
										
										
											2019-09-24 05:34:12 +02:00
										 |  |  |     return int(gdbval) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def stringify(val): | 
					
						
							|  |  |  |     # TODO: repr() puts everything on one line; pformat can be nicer, but | 
					
						
							|  |  |  |     # can lead to v.long results; this function isolates the choice | 
					
						
							|  |  |  |     if True: | 
					
						
							|  |  |  |         return repr(val) | 
					
						
							|  |  |  |     else: | 
					
						
							|  |  |  |         from pprint import pformat | 
					
						
							|  |  |  |         return pformat(val) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PyObjectPtrPrinter: | 
					
						
							|  |  |  |     "Prints a (PyObject*)" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def __init__ (self, gdbval): | 
					
						
							|  |  |  |         self.gdbval = gdbval | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def to_string (self): | 
					
						
							|  |  |  |         pyop = PyObjectPtr.from_pyobject_ptr(self.gdbval) | 
					
						
							|  |  |  |         if True: | 
					
						
							|  |  |  |             return pyop.get_truncated_repr(MAX_OUTPUT_LEN) | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             # Generate full proxy value then stringify it. | 
					
						
							|  |  |  |             # Doing so could be expensive | 
					
						
							|  |  |  |             proxyval = pyop.proxyval(set()) | 
					
						
							|  |  |  |             return stringify(proxyval) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def pretty_printer_lookup(gdbval): | 
					
						
							| 
									
										
										
										
											2024-09-12 12:37:06 -04:00
										 |  |  |     type = gdbval.type.strip_typedefs().unqualified() | 
					
						
							|  |  |  |     if type.code == gdb.TYPE_CODE_UNION and type.tag == '_PyStackRef': | 
					
						
							|  |  |  |         return PyObjectPtrPrinter(gdbval) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-01 16:29:54 +01:00
										 |  |  |     if type.code != gdb.TYPE_CODE_PTR: | 
					
						
							|  |  |  |         return None | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     type = type.target().unqualified() | 
					
						
							|  |  |  |     t = str(type) | 
					
						
							|  |  |  |     if t in ("PyObject", "PyFrameObject", "PyUnicodeObject", "wrapperobject"): | 
					
						
							|  |  |  |         return PyObjectPtrPrinter(gdbval) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  | """
 | 
					
						
							|  |  |  | During development, I've been manually invoking the code in this way: | 
					
						
							|  |  |  | (gdb) python | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import sys | 
					
						
							|  |  |  | sys.path.append('/home/david/coding/python-gdb') | 
					
						
							|  |  |  | import libpython | 
					
						
							|  |  |  | end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | then reloading it after each edit like this: | 
					
						
							|  |  |  | (gdb) python reload(libpython) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The following code should ensure that the prettyprinter is registered | 
					
						
							|  |  |  | if the code is autoloaded by gdb when visiting libpython.so, provided | 
					
						
							|  |  |  | that this python file is installed to the same path as the library (or its | 
					
						
							|  |  |  | .debug file) plus a "-gdb.py" suffix, e.g: | 
					
						
							| 
									
										
										
										
											2023-06-14 12:30:22 +02:00
										 |  |  |   /usr/lib/libpython3.12.so.1.0-gdb.py | 
					
						
							|  |  |  |   /usr/lib/debug/usr/lib/libpython3.12.so.1.0.debug-gdb.py | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | """
 | 
					
						
							|  |  |  | def register (obj): | 
					
						
							| 
									
										
										
										
											2012-10-09 11:16:03 -04:00
										 |  |  |     if obj is None: | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         obj = gdb | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # Wire up the pretty-printer | 
					
						
							|  |  |  |     obj.pretty_printers.append(pretty_printer_lookup) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | register (gdb.current_objfile ()) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-21 06:05:58 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | # Unfortunately, the exact API exposed by the gdb module varies somewhat | 
					
						
							|  |  |  | # from build to build | 
					
						
							|  |  |  | # See http://bugs.python.org/issue8279?#msg102276 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | class Frame(object): | 
					
						
							|  |  |  |     '''
 | 
					
						
							|  |  |  |     Wrapper for gdb.Frame, adding various methods | 
					
						
							|  |  |  |     '''
 | 
					
						
							|  |  |  |     def __init__(self, gdbframe): | 
					
						
							|  |  |  |         self._gdbframe = gdbframe | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def older(self): | 
					
						
							|  |  |  |         older = self._gdbframe.older() | 
					
						
							|  |  |  |         if older: | 
					
						
							|  |  |  |             return Frame(older) | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             return None | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def newer(self): | 
					
						
							|  |  |  |         newer = self._gdbframe.newer() | 
					
						
							|  |  |  |         if newer: | 
					
						
							|  |  |  |             return Frame(newer) | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             return None | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def select(self): | 
					
						
							| 
									
										
										
										
											2010-04-21 06:05:58 +00:00
										 |  |  |         '''If supported, select this frame and return True; return False if unsupported
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         Not all builds have a gdb.Frame.select method; seems to be present on Fedora 12 | 
					
						
							|  |  |  |         onwards, but absent on Ubuntu buildbot'''
 | 
					
						
							|  |  |  |         if not hasattr(self._gdbframe, 'select'): | 
					
						
							|  |  |  |             print ('Unable to select frame: ' | 
					
						
							|  |  |  |                    'this build of gdb does not expose a gdb.Frame.select method') | 
					
						
							|  |  |  |             return False | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         self._gdbframe.select() | 
					
						
							| 
									
										
										
										
											2010-04-21 06:05:58 +00:00
										 |  |  |         return True | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  |     def get_index(self): | 
					
						
							|  |  |  |         '''Calculate index of frame, starting at 0 for the newest frame within
 | 
					
						
							|  |  |  |         this thread'''
 | 
					
						
							|  |  |  |         index = 0 | 
					
						
							|  |  |  |         # Go down until you reach the newest frame: | 
					
						
							|  |  |  |         iter_frame = self | 
					
						
							|  |  |  |         while iter_frame.newer(): | 
					
						
							|  |  |  |             index += 1 | 
					
						
							|  |  |  |             iter_frame = iter_frame.newer() | 
					
						
							|  |  |  |         return index | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-27 14:15:34 -04:00
										 |  |  |     # We divide frames into: | 
					
						
							|  |  |  |     #   - "python frames": | 
					
						
							|  |  |  |     #       - "bytecode frames" i.e. PyEval_EvalFrameEx | 
					
						
							|  |  |  |     #       - "other python frames": things that are of interest from a python | 
					
						
							|  |  |  |     #         POV, but aren't bytecode (e.g. GC, GIL) | 
					
						
							|  |  |  |     #   - everything else | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def is_python_frame(self): | 
					
						
							| 
									
										
										
										
											2017-08-21 16:40:29 -07:00
										 |  |  |         '''Is this a _PyEval_EvalFrameDefault frame, or some other important
 | 
					
						
							| 
									
										
										
										
											2012-06-27 14:15:34 -04:00
										 |  |  |         frame? (see is_other_python_frame for what "important" means in this | 
					
						
							|  |  |  |         context)'''
 | 
					
						
							| 
									
										
										
										
											2017-08-21 16:40:29 -07:00
										 |  |  |         if self.is_evalframe(): | 
					
						
							| 
									
										
										
										
											2012-06-27 14:15:34 -04:00
										 |  |  |             return True | 
					
						
							|  |  |  |         if self.is_other_python_frame(): | 
					
						
							|  |  |  |             return True | 
					
						
							|  |  |  |         return False | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-21 16:40:29 -07:00
										 |  |  |     def is_evalframe(self): | 
					
						
							|  |  |  |         '''Is this a _PyEval_EvalFrameDefault frame?''' | 
					
						
							|  |  |  |         if self._gdbframe.name() == EVALFRAME: | 
					
						
							| 
									
										
										
										
											2010-04-20 22:32:07 +00:00
										 |  |  |             '''
 | 
					
						
							|  |  |  |             I believe we also need to filter on the inline | 
					
						
							|  |  |  |             struct frame_id.inline_depth, only regarding frames with | 
					
						
							|  |  |  |             an inline depth of 0 as actually being this function | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             So we reject those with type gdb.INLINE_FRAME | 
					
						
							|  |  |  |             '''
 | 
					
						
							|  |  |  |             if self._gdbframe.type() == gdb.NORMAL_FRAME: | 
					
						
							| 
									
										
										
										
											2017-08-21 16:40:29 -07:00
										 |  |  |                 # We have a _PyEval_EvalFrameDefault frame: | 
					
						
							| 
									
										
										
										
											2010-04-20 22:32:07 +00:00
										 |  |  |                 return True | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  |         return False | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-27 14:15:34 -04:00
										 |  |  |     def is_other_python_frame(self): | 
					
						
							|  |  |  |         '''Is this frame worth displaying in python backtraces?
 | 
					
						
							|  |  |  |         Examples: | 
					
						
							|  |  |  |           - waiting on the GIL | 
					
						
							|  |  |  |           - garbage-collecting | 
					
						
							|  |  |  |           - within a CFunction | 
					
						
							|  |  |  |          If it is, return a descriptive string | 
					
						
							|  |  |  |          For other frames, return False | 
					
						
							|  |  |  |          '''
 | 
					
						
							|  |  |  |         if self.is_waiting_for_gil(): | 
					
						
							|  |  |  |             return 'Waiting for the GIL' | 
					
						
							| 
									
										
										
										
											2016-11-22 22:53:18 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if self.is_gc_collect(): | 
					
						
							| 
									
										
										
										
											2012-06-27 14:15:34 -04:00
										 |  |  |             return 'Garbage-collecting' | 
					
						
							| 
									
										
										
										
											2016-11-22 22:53:18 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         # Detect invocations of PyCFunction instances: | 
					
						
							| 
									
										
										
										
											2017-01-18 17:20:01 +01:00
										 |  |  |         frame = self._gdbframe | 
					
						
							|  |  |  |         caller = frame.name() | 
					
						
							| 
									
										
										
										
											2016-11-22 22:53:18 +01:00
										 |  |  |         if not caller: | 
					
						
							|  |  |  |             return False | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-05 14:48:24 +02:00
										 |  |  |         if (caller.startswith('cfunction_vectorcall_') or | 
					
						
							| 
									
										
										
										
											2019-09-11 13:01:01 +02:00
										 |  |  |             caller == 'cfunction_call'): | 
					
						
							| 
									
										
										
										
											2017-02-03 07:43:03 +09:00
										 |  |  |             arg_name = 'func' | 
					
						
							| 
									
										
										
										
											2016-11-22 22:53:18 +01:00
										 |  |  |             # Within that frame: | 
					
						
							|  |  |  |             #   "func" is the local containing the PyObject* of the | 
					
						
							|  |  |  |             # PyCFunctionObject instance | 
					
						
							|  |  |  |             #   "f" is the same value, but cast to (PyCFunctionObject*) | 
					
						
							|  |  |  |             #   "self" is the (PyObject*) of the 'self' | 
					
						
							|  |  |  |             try: | 
					
						
							|  |  |  |                 # Use the prettyprinter for the func: | 
					
						
							| 
									
										
										
										
											2017-01-18 17:20:01 +01:00
										 |  |  |                 func = frame.read_var(arg_name) | 
					
						
							| 
									
										
										
										
											2016-11-22 22:53:18 +01:00
										 |  |  |                 return str(func) | 
					
						
							| 
									
										
										
										
											2018-06-14 16:28:07 +02:00
										 |  |  |             except ValueError: | 
					
						
							|  |  |  |                 return ('PyCFunction invocation (unable to read %s: ' | 
					
						
							|  |  |  |                         'missing debuginfos?)' % arg_name) | 
					
						
							| 
									
										
										
										
											2016-11-22 22:53:18 +01:00
										 |  |  |             except RuntimeError: | 
					
						
							| 
									
										
										
										
											2017-01-18 17:20:01 +01:00
										 |  |  |                 return 'PyCFunction invocation (unable to read %s)' % arg_name | 
					
						
							| 
									
										
										
										
											2012-06-27 14:15:34 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-01 16:29:54 +01:00
										 |  |  |         if caller == 'wrapper_call': | 
					
						
							| 
									
										
										
										
											2018-06-14 16:28:07 +02:00
										 |  |  |             arg_name = 'wp' | 
					
						
							| 
									
										
										
										
											2017-02-01 16:29:54 +01:00
										 |  |  |             try: | 
					
						
							| 
									
										
										
										
											2018-06-14 16:28:07 +02:00
										 |  |  |                 func = frame.read_var(arg_name) | 
					
						
							| 
									
										
										
										
											2017-02-01 16:29:54 +01:00
										 |  |  |                 return str(func) | 
					
						
							| 
									
										
										
										
											2018-06-14 16:28:07 +02:00
										 |  |  |             except ValueError: | 
					
						
							|  |  |  |                 return ('<wrapper_call invocation (unable to read %s: ' | 
					
						
							|  |  |  |                         'missing debuginfos?)>' % arg_name) | 
					
						
							| 
									
										
										
										
											2017-02-01 16:29:54 +01:00
										 |  |  |             except RuntimeError: | 
					
						
							| 
									
										
										
										
											2018-06-14 16:28:07 +02:00
										 |  |  |                 return '<wrapper_call invocation (unable to read %s)>' % arg_name | 
					
						
							| 
									
										
										
										
											2017-02-01 16:29:54 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-27 14:15:34 -04:00
										 |  |  |         # This frame isn't worth reporting: | 
					
						
							|  |  |  |         return False | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def is_waiting_for_gil(self): | 
					
						
							|  |  |  |         '''Is this frame waiting on the GIL?''' | 
					
						
							| 
									
										
										
										
											2022-08-24 14:21:01 +01:00
										 |  |  |         # This assumes the _POSIX_THREADS version of Python/ceval_gil.c: | 
					
						
							| 
									
										
										
										
											2012-06-27 14:15:34 -04:00
										 |  |  |         name = self._gdbframe.name() | 
					
						
							|  |  |  |         if name: | 
					
						
							| 
									
										
										
										
											2020-03-09 19:35:26 +01:00
										 |  |  |             return (name == 'take_gil') | 
					
						
							| 
									
										
										
										
											2012-06-27 14:15:34 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def is_gc_collect(self): | 
					
						
							| 
									
										
										
										
											2024-03-20 08:54:42 +00:00
										 |  |  |         '''Is this frame a collector within the garbage-collector?''' | 
					
						
							|  |  |  |         return self._gdbframe.name() in ( | 
					
						
							|  |  |  |             'collect', 'gc_collect_full', 'gc_collect_main', | 
					
						
							|  |  |  |             'gc_collect_young', 'gc_collect_increment', | 
					
						
							|  |  |  |         ) | 
					
						
							| 
									
										
										
										
											2012-06-27 14:15:34 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |     def get_pyop(self): | 
					
						
							|  |  |  |         try: | 
					
						
							| 
									
										
										
										
											2021-11-21 02:06:16 +00:00
										 |  |  |             frame = self._gdbframe.read_var('frame') | 
					
						
							|  |  |  |             frame = PyFramePtr(frame) | 
					
						
							|  |  |  |             if not frame.is_optimized_out(): | 
					
						
							|  |  |  |                 return frame | 
					
						
							| 
									
										
										
										
											2021-11-09 11:19:47 +00:00
										 |  |  |             cframe = self._gdbframe.read_var('cframe') | 
					
						
							|  |  |  |             if cframe is None: | 
					
						
							|  |  |  |                 return None | 
					
						
							| 
									
										
										
										
											2021-11-10 13:41:22 +00:00
										 |  |  |             frame = PyFramePtr(cframe["current_frame"]) | 
					
						
							| 
									
										
										
										
											2021-11-09 11:19:47 +00:00
										 |  |  |             if frame and not frame.is_optimized_out(): | 
					
						
							|  |  |  |                 return frame | 
					
						
							|  |  |  |             return None | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         except ValueError: | 
					
						
							|  |  |  |             return None | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @classmethod | 
					
						
							|  |  |  |     def get_selected_frame(cls): | 
					
						
							|  |  |  |         _gdbframe = gdb.selected_frame() | 
					
						
							|  |  |  |         if _gdbframe: | 
					
						
							|  |  |  |             return Frame(_gdbframe) | 
					
						
							|  |  |  |         return None | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @classmethod | 
					
						
							|  |  |  |     def get_selected_python_frame(cls): | 
					
						
							| 
									
										
										
										
											2012-06-27 14:15:34 -04:00
										 |  |  |         '''Try to obtain the Frame for the python-related code in the selected
 | 
					
						
							|  |  |  |         frame, or None'''
 | 
					
						
							| 
									
										
										
										
											2016-12-16 10:00:39 +01:00
										 |  |  |         try: | 
					
						
							|  |  |  |             frame = cls.get_selected_frame() | 
					
						
							|  |  |  |         except gdb.error: | 
					
						
							|  |  |  |             # No frame: Python didn't start yet | 
					
						
							|  |  |  |             return None | 
					
						
							| 
									
										
										
										
											2012-06-27 14:15:34 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |         while frame: | 
					
						
							|  |  |  |             if frame.is_python_frame(): | 
					
						
							|  |  |  |                 return frame | 
					
						
							|  |  |  |             frame = frame.older() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Not found: | 
					
						
							|  |  |  |         return None | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @classmethod | 
					
						
							|  |  |  |     def get_selected_bytecode_frame(cls): | 
					
						
							|  |  |  |         '''Try to obtain the Frame for the python bytecode interpreter in the
 | 
					
						
							|  |  |  |         selected GDB frame, or None'''
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         frame = cls.get_selected_frame() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         while frame: | 
					
						
							| 
									
										
										
										
											2017-08-21 16:40:29 -07:00
										 |  |  |             if frame.is_evalframe(): | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |                 return frame | 
					
						
							|  |  |  |             frame = frame.older() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Not found: | 
					
						
							|  |  |  |         return None | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def print_summary(self): | 
					
						
							| 
									
										
										
										
											2017-08-21 16:40:29 -07:00
										 |  |  |         if self.is_evalframe(): | 
					
						
							| 
									
										
										
										
											2021-10-09 16:51:30 +01:00
										 |  |  |             interp_frame = self.get_pyop() | 
					
						
							|  |  |  |             while True: | 
					
						
							|  |  |  |                 if interp_frame: | 
					
						
							| 
									
										
										
										
											2022-11-10 04:34:57 -08:00
										 |  |  |                     if interp_frame.is_shim(): | 
					
						
							|  |  |  |                         break | 
					
						
							| 
									
										
										
										
											2021-10-09 16:51:30 +01:00
										 |  |  |                     line = interp_frame.get_truncated_repr(MAX_OUTPUT_LEN) | 
					
						
							| 
									
										
										
										
											2022-03-15 17:04:11 +09:00
										 |  |  |                     sys.stdout.write('#%i %s\n' % (self.get_index(), line)) | 
					
						
							| 
									
										
										
										
											2021-10-09 16:51:30 +01:00
										 |  |  |                     if not interp_frame.is_optimized_out(): | 
					
						
							|  |  |  |                         line = interp_frame.current_line() | 
					
						
							|  |  |  |                         if line is not None: | 
					
						
							|  |  |  |                             sys.stdout.write('    %s\n' % line.strip()) | 
					
						
							|  |  |  |                 else: | 
					
						
							|  |  |  |                     sys.stdout.write('#%i (unable to read python frame information)\n' % self.get_index()) | 
					
						
							| 
									
										
										
										
											2021-11-21 02:06:16 +00:00
										 |  |  |                     break | 
					
						
							| 
									
										
										
										
											2021-10-09 16:51:30 +01:00
										 |  |  |                 interp_frame = interp_frame.previous() | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         else: | 
					
						
							| 
									
										
										
										
											2012-06-27 14:15:34 -04:00
										 |  |  |             info = self.is_other_python_frame() | 
					
						
							|  |  |  |             if info: | 
					
						
							|  |  |  |                 sys.stdout.write('#%i %s\n' % (self.get_index(), info)) | 
					
						
							|  |  |  |             else: | 
					
						
							|  |  |  |                 sys.stdout.write('#%i\n' % self.get_index()) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-13 17:40:15 +02:00
										 |  |  |     def print_traceback(self): | 
					
						
							| 
									
										
										
										
											2017-08-21 16:40:29 -07:00
										 |  |  |         if self.is_evalframe(): | 
					
						
							| 
									
										
										
										
											2021-10-09 16:51:30 +01:00
										 |  |  |             interp_frame = self.get_pyop() | 
					
						
							|  |  |  |             while True: | 
					
						
							|  |  |  |                 if interp_frame: | 
					
						
							| 
									
										
										
										
											2022-11-10 04:34:57 -08:00
										 |  |  |                     if interp_frame.is_shim(): | 
					
						
							|  |  |  |                         break | 
					
						
							| 
									
										
										
										
											2021-10-09 16:51:30 +01:00
										 |  |  |                     interp_frame.print_traceback() | 
					
						
							|  |  |  |                     if not interp_frame.is_optimized_out(): | 
					
						
							|  |  |  |                         line = interp_frame.current_line() | 
					
						
							|  |  |  |                         if line is not None: | 
					
						
							|  |  |  |                             sys.stdout.write('    %s\n' % line.strip()) | 
					
						
							|  |  |  |                 else: | 
					
						
							|  |  |  |                     sys.stdout.write('  (unable to read python frame information)\n') | 
					
						
							| 
									
										
										
										
											2021-11-21 02:06:16 +00:00
										 |  |  |                     break | 
					
						
							| 
									
										
										
										
											2021-10-09 16:51:30 +01:00
										 |  |  |                 interp_frame = interp_frame.previous() | 
					
						
							| 
									
										
										
										
											2011-05-13 17:40:15 +02:00
										 |  |  |         else: | 
					
						
							| 
									
										
										
										
											2012-06-27 14:15:34 -04:00
										 |  |  |             info = self.is_other_python_frame() | 
					
						
							|  |  |  |             if info: | 
					
						
							|  |  |  |                 sys.stdout.write('  %s\n' % info) | 
					
						
							|  |  |  |             else: | 
					
						
							|  |  |  |                 sys.stdout.write('  (not a python frame)\n') | 
					
						
							| 
									
										
										
										
											2011-05-13 17:40:15 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | class PyList(gdb.Command): | 
					
						
							|  |  |  |     '''List the current Python source code, if any
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Use | 
					
						
							|  |  |  |        py-list START | 
					
						
							|  |  |  |     to list at a different line number within the python source. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Use | 
					
						
							|  |  |  |        py-list START, END | 
					
						
							|  |  |  |     to list a specific range of lines within the python source. | 
					
						
							|  |  |  |     '''
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def __init__(self): | 
					
						
							|  |  |  |         gdb.Command.__init__ (self, | 
					
						
							|  |  |  |                               "py-list", | 
					
						
							|  |  |  |                               gdb.COMMAND_FILES, | 
					
						
							|  |  |  |                               gdb.COMPLETE_NONE) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def invoke(self, args, from_tty): | 
					
						
							|  |  |  |         import re | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         start = None | 
					
						
							|  |  |  |         end = None | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         m = re.match(r'\s*(\d+)\s*', args) | 
					
						
							|  |  |  |         if m: | 
					
						
							|  |  |  |             start = int(m.group(0)) | 
					
						
							|  |  |  |             end = start + 10 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         m = re.match(r'\s*(\d+)\s*,\s*(\d+)\s*', args) | 
					
						
							|  |  |  |         if m: | 
					
						
							|  |  |  |             start, end = map(int, m.groups()) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-27 14:15:34 -04:00
										 |  |  |         # py-list requires an actual PyEval_EvalFrameEx frame: | 
					
						
							|  |  |  |         frame = Frame.get_selected_bytecode_frame() | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         if not frame: | 
					
						
							| 
									
										
										
										
											2013-11-23 17:40:36 +01:00
										 |  |  |             print('Unable to locate gdb frame for python bytecode interpreter') | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |             return | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         pyop = frame.get_pyop() | 
					
						
							| 
									
										
										
										
											2011-12-19 13:42:24 +01:00
										 |  |  |         if not pyop or pyop.is_optimized_out(): | 
					
						
							| 
									
										
										
										
											2020-03-20 08:23:26 +01:00
										 |  |  |             print(UNABLE_READ_INFO_PYTHON_FRAME) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |             return | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         filename = pyop.filename() | 
					
						
							|  |  |  |         lineno = pyop.current_line_num() | 
					
						
							| 
									
										
										
										
											2018-10-15 23:19:57 +02:00
										 |  |  |         if lineno is None: | 
					
						
							|  |  |  |             print('Unable to read python frame line number') | 
					
						
							|  |  |  |             return | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  |         if start is None: | 
					
						
							|  |  |  |             start = lineno - 5 | 
					
						
							|  |  |  |             end = lineno + 5 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if start<1: | 
					
						
							|  |  |  |             start = 1 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-07-01 12:57:44 +02:00
										 |  |  |         try: | 
					
						
							| 
									
										
										
										
											2023-06-14 12:30:22 +02:00
										 |  |  |             f = open(os.fsencode(filename), 'r', encoding="utf-8") | 
					
						
							| 
									
										
										
										
											2011-07-01 12:57:44 +02:00
										 |  |  |         except IOError as err: | 
					
						
							|  |  |  |             sys.stdout.write('Unable to open %s: %s\n' | 
					
						
							|  |  |  |                              % (filename, err)) | 
					
						
							|  |  |  |             return | 
					
						
							|  |  |  |         with f: | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |             all_lines = f.readlines() | 
					
						
							|  |  |  |             # start and end are 1-based, all_lines is 0-based; | 
					
						
							|  |  |  |             # so [start-1:end] as a python slice gives us [start, end] as a | 
					
						
							|  |  |  |             # closed interval | 
					
						
							|  |  |  |             for i, line in enumerate(all_lines[start-1:end]): | 
					
						
							|  |  |  |                 linestr = str(i+start) | 
					
						
							|  |  |  |                 # Highlight current line: | 
					
						
							|  |  |  |                 if i + start == lineno: | 
					
						
							|  |  |  |                     linestr = '>' + linestr | 
					
						
							|  |  |  |                 sys.stdout.write('%4s    %s' % (linestr, line)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # ...and register the command: | 
					
						
							|  |  |  | PyList() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def move_in_stack(move_up): | 
					
						
							|  |  |  |     '''Move up or down the stack (for the py-up/py-down command)''' | 
					
						
							| 
									
										
										
										
											2021-10-09 16:51:30 +01:00
										 |  |  |     # Important: | 
					
						
							|  |  |  |     # The amount of frames that are printed out depends on how many frames are inlined | 
					
						
							|  |  |  |     # in the same evaluation loop. As this command links directly the C stack with the | 
					
						
							|  |  |  |     # Python stack, the results are sensitive to the number of inlined frames and this | 
					
						
							|  |  |  |     # is likely to change between versions and optimizations. | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |     frame = Frame.get_selected_python_frame() | 
					
						
							| 
									
										
										
										
											2016-12-16 10:00:39 +01:00
										 |  |  |     if not frame: | 
					
						
							|  |  |  |         print('Unable to locate python frame') | 
					
						
							|  |  |  |         return | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |     while frame: | 
					
						
							|  |  |  |         if move_up: | 
					
						
							|  |  |  |             iter_frame = frame.older() | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             iter_frame = frame.newer() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if not iter_frame: | 
					
						
							|  |  |  |             break | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-27 14:15:34 -04:00
										 |  |  |         if iter_frame.is_python_frame(): | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |             # Result: | 
					
						
							| 
									
										
										
										
											2010-04-21 06:05:58 +00:00
										 |  |  |             if iter_frame.select(): | 
					
						
							|  |  |  |                 iter_frame.print_summary() | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |             return | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         frame = iter_frame | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if move_up: | 
					
						
							| 
									
										
										
										
											2013-11-23 17:40:36 +01:00
										 |  |  |         print('Unable to find an older python frame') | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |     else: | 
					
						
							| 
									
										
										
										
											2013-11-23 17:40:36 +01:00
										 |  |  |         print('Unable to find a newer python frame') | 
					
						
							| 
									
										
										
										
											2021-10-13 14:19:34 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  | class PyUp(gdb.Command): | 
					
						
							| 
									
										
										
										
											2021-10-09 16:51:30 +01:00
										 |  |  |     'Select and print all python stack frame in the same eval loop starting from the one that called this one (if any)' | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |     def __init__(self): | 
					
						
							|  |  |  |         gdb.Command.__init__ (self, | 
					
						
							|  |  |  |                               "py-up", | 
					
						
							|  |  |  |                               gdb.COMMAND_STACK, | 
					
						
							|  |  |  |                               gdb.COMPLETE_NONE) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def invoke(self, args, from_tty): | 
					
						
							|  |  |  |         move_in_stack(move_up=True) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PyDown(gdb.Command): | 
					
						
							| 
									
										
										
										
											2021-10-09 16:51:30 +01:00
										 |  |  |     'Select and print all python stack frame in the same eval loop starting from the one called this one (if any)' | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |     def __init__(self): | 
					
						
							|  |  |  |         gdb.Command.__init__ (self, | 
					
						
							|  |  |  |                               "py-down", | 
					
						
							|  |  |  |                               gdb.COMMAND_STACK, | 
					
						
							|  |  |  |                               gdb.COMPLETE_NONE) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def invoke(self, args, from_tty): | 
					
						
							|  |  |  |         move_in_stack(move_up=False) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-20 22:32:07 +00:00
										 |  |  | # Not all builds of gdb have gdb.Frame.select | 
					
						
							|  |  |  | if hasattr(gdb.Frame, 'select'): | 
					
						
							|  |  |  |     PyUp() | 
					
						
							|  |  |  |     PyDown() | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-13 17:40:15 +02:00
										 |  |  | class PyBacktraceFull(gdb.Command): | 
					
						
							|  |  |  |     'Display the current python frame and all the frames within its call stack (if any)' | 
					
						
							|  |  |  |     def __init__(self): | 
					
						
							|  |  |  |         gdb.Command.__init__ (self, | 
					
						
							|  |  |  |                               "py-bt-full", | 
					
						
							|  |  |  |                               gdb.COMMAND_STACK, | 
					
						
							|  |  |  |                               gdb.COMPLETE_NONE) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def invoke(self, args, from_tty): | 
					
						
							|  |  |  |         frame = Frame.get_selected_python_frame() | 
					
						
							| 
									
										
										
										
											2016-12-16 10:00:39 +01:00
										 |  |  |         if not frame: | 
					
						
							|  |  |  |             print('Unable to locate python frame') | 
					
						
							|  |  |  |             return | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-13 17:40:15 +02:00
										 |  |  |         while frame: | 
					
						
							| 
									
										
										
										
											2012-06-27 14:15:34 -04:00
										 |  |  |             if frame.is_python_frame(): | 
					
						
							| 
									
										
										
										
											2011-05-13 17:40:15 +02:00
										 |  |  |                 frame.print_summary() | 
					
						
							|  |  |  |             frame = frame.older() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PyBacktraceFull() | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | class PyBacktrace(gdb.Command): | 
					
						
							|  |  |  |     'Display the current python frame and all the frames within its call stack (if any)' | 
					
						
							|  |  |  |     def __init__(self): | 
					
						
							|  |  |  |         gdb.Command.__init__ (self, | 
					
						
							|  |  |  |                               "py-bt", | 
					
						
							|  |  |  |                               gdb.COMMAND_STACK, | 
					
						
							|  |  |  |                               gdb.COMPLETE_NONE) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def invoke(self, args, from_tty): | 
					
						
							|  |  |  |         frame = Frame.get_selected_python_frame() | 
					
						
							| 
									
										
										
										
											2016-12-16 10:00:39 +01:00
										 |  |  |         if not frame: | 
					
						
							|  |  |  |             print('Unable to locate python frame') | 
					
						
							|  |  |  |             return | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         sys.stdout.write('Traceback (most recent call first):\n') | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |         while frame: | 
					
						
							| 
									
										
										
										
											2012-06-27 14:15:34 -04:00
										 |  |  |             if frame.is_python_frame(): | 
					
						
							| 
									
										
										
										
											2011-05-13 17:40:15 +02:00
										 |  |  |                 frame.print_traceback() | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |             frame = frame.older() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PyBacktrace() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PyPrint(gdb.Command): | 
					
						
							|  |  |  |     'Look up the given python variable name, and print it' | 
					
						
							|  |  |  |     def __init__(self): | 
					
						
							|  |  |  |         gdb.Command.__init__ (self, | 
					
						
							|  |  |  |                               "py-print", | 
					
						
							|  |  |  |                               gdb.COMMAND_DATA, | 
					
						
							|  |  |  |                               gdb.COMPLETE_NONE) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def invoke(self, args, from_tty): | 
					
						
							|  |  |  |         name = str(args) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         frame = Frame.get_selected_python_frame() | 
					
						
							|  |  |  |         if not frame: | 
					
						
							| 
									
										
										
										
											2013-11-23 17:40:36 +01:00
										 |  |  |             print('Unable to locate python frame') | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |             return | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         pyop_frame = frame.get_pyop() | 
					
						
							|  |  |  |         if not pyop_frame: | 
					
						
							| 
									
										
										
										
											2020-03-20 08:23:26 +01:00
										 |  |  |             print(UNABLE_READ_INFO_PYTHON_FRAME) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |             return | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         pyop_var, scope = pyop_frame.get_var_by_name(name) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if pyop_var: | 
					
						
							| 
									
										
										
										
											2013-11-23 17:40:36 +01:00
										 |  |  |             print('%s %r = %s' | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |                    % (scope, | 
					
						
							|  |  |  |                       name, | 
					
						
							|  |  |  |                       pyop_var.get_truncated_repr(MAX_OUTPUT_LEN))) | 
					
						
							|  |  |  |         else: | 
					
						
							| 
									
										
										
										
											2013-11-23 17:40:36 +01:00
										 |  |  |             print('%r not found' % name) | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  | PyPrint() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PyLocals(gdb.Command): | 
					
						
							|  |  |  |     'Look up the given python variable name, and print it' | 
					
						
							|  |  |  |     def __init__(self): | 
					
						
							|  |  |  |         gdb.Command.__init__ (self, | 
					
						
							|  |  |  |                               "py-locals", | 
					
						
							|  |  |  |                               gdb.COMMAND_DATA, | 
					
						
							|  |  |  |                               gdb.COMPLETE_NONE) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def invoke(self, args, from_tty): | 
					
						
							|  |  |  |         name = str(args) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         frame = Frame.get_selected_python_frame() | 
					
						
							|  |  |  |         if not frame: | 
					
						
							| 
									
										
										
										
											2013-11-23 17:40:36 +01:00
										 |  |  |             print('Unable to locate python frame') | 
					
						
							| 
									
										
											  
											
												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
										 |  |  |             return | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         pyop_frame = frame.get_pyop() | 
					
						
							| 
									
										
										
										
											2021-10-09 16:51:30 +01:00
										 |  |  |         while True: | 
					
						
							|  |  |  |             if not pyop_frame: | 
					
						
							|  |  |  |                 print(UNABLE_READ_INFO_PYTHON_FRAME) | 
					
						
							| 
									
										
										
										
											2023-01-03 09:56:57 -05:00
										 |  |  |                 break | 
					
						
							| 
									
										
										
										
											2022-11-10 04:34:57 -08:00
										 |  |  |             if pyop_frame.is_shim(): | 
					
						
							|  |  |  |                 break | 
					
						
							| 
									
										
										
										
											2021-10-09 16:51:30 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |             sys.stdout.write('Locals for %s\n' % (pyop_frame.co_name.proxyval(set()))) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             for pyop_name, pyop_value in pyop_frame.iter_locals(): | 
					
						
							|  |  |  |                 print('%s = %s' | 
					
						
							|  |  |  |                     % (pyop_name.proxyval(set()), | 
					
						
							|  |  |  |                         pyop_value.get_truncated_repr(MAX_OUTPUT_LEN))) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-09 16:51:30 +01:00
										 |  |  |             pyop_frame = pyop_frame.previous() | 
					
						
							| 
									
										
											  
											
												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
										 |  |  | 
 | 
					
						
							|  |  |  | PyLocals() |