[Bug 1241668] Re: gdb embeds python3.3, but support scripts are not compatible

Steve Langasek steve.langasek at canonical.com
Mon Nov 4 23:47:36 UTC 2013


jtaylor points out on IRC that fixing the syntax with 2to3 is
insufficient to make this actually work.

Test case:

  $ sudo apt-get install python3-dbg gdb
  $ 2to3 /usr/lib/debug/usr/bin/python3.3m-gdb.py > /tmp/python-gdb.patch
  $ cd / && sudo patch -p0 < /tmp/python-gdb.patch
  $ gdb --args python3-dbg /usr/bin/lsb_release
  (gdb) break PyTuple_Size
  (gdb) run
  (gdb) bt

With gdb compiled for python3, instead of getting useful python
information in the backtrace, you get python exceptions:

(gdb) bt
#0  PyTuple_Size (
    op=(None, <code at remote 0x7ffff7fe8340>, '_make_relax_case.<locals>._relax_case', <code at remote 0x7ffff7fe8400>)) at ../Objects/tupleobject.c:127
#1  0x00000000006567c0 in PyFunction_NewWithQualName (
Python Exception <class 'AttributeError'> 'PyDictObjectPtr' object has no attribute 'items': 
    code=<code at remote 0x7ffff7fe84c0>, globals=, 
    qualname='_make_relax_case') at ../Objects/funcobject.c:29
Python Exception <class 'TypeError'> 'gdb.Value' object cannot be interpreted as an integer: 
<snip>

so this seems to need some further help.

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to python2.7 in Ubuntu.
https://bugs.launchpad.net/bugs/1241668

Title:
  gdb embeds python3.3, but support scripts are not compatible

Status in Python:
  New
Status in “gdb” package in Ubuntu:
  Invalid
Status in “python2.7” package in Ubuntu:
  Triaged
Status in “python3.3” package in Ubuntu:
  Triaged
Status in “gdb” source package in Saucy:
  Invalid
Status in “python2.7” source package in Saucy:
  Triaged
Status in “python3.3” source package in Saucy:
  Triaged

Bug description:
  The saucy gdb appears to be linked against libpython3.3.

  This results in a conflict when trying to debug python2.7 programs,
  which use the python2.7-dbg.py scripts from python2.7-dbg.  This makes
  debugging Python programs difficult.

  
    File "/usr/lib/debug/usr/bin/python2.7-gdb.py", line 54
      Py_TPFLAGS_HEAPTYPE = (1L << 9)
                              ^
  SyntaxError: invalid syntax
    File "/usr/lib/debug/usr/bin/python2.7-gdb.py", line 54
      Py_TPFLAGS_HEAPTYPE = (1L << 9)

  There are also invalid print statements that show up as well.

  If these are updated, then the file parses, but `py-bt` fails with:

  Error occurred in Python command: global name 'long' is not defined

  Updating all of the long() references to int() doesn't work:

  Error occurred in Python command: 'gdb.Value' object cannot be
  interpreted as an integer

To manage notifications about this bug go to:
https://bugs.launchpad.net/python/+bug/1241668/+subscriptions



More information about the foundations-bugs mailing list