Estoy ejecutando Ubuntu 16.04
con gdb
la versión 7.11.1-0ubuntu1~16.5
. Cuando actualicé g++
a g++-6.4
( Ubuntu 6.4.0-17ubuntu1~16.04
), gdb comenzó a dar errores de Python como:
Python Exception <class 'TypeError'> expected string or bytes-like object:
Error while executing Python code.
cada vez que intento imprimir una clase o un objeto STL durante la depuración. Determiné que solo gdb-8
admite soporte g++-6.4
, así que intenté construir gdb-8.1
a partir de las instrucciones enhttp://www.linuxfromscratch.org/blfs/view/cvs/general/gdb.html, pero gdb-8.1
requiere python 2.7.15
, y simplemente instalar gdb-8.1
sin actualizar Python (la versión instalada es 2.7.12
) no resolvió los problemas de impresión.
Siguiendo la respuesta aceptada en¿Cómo instalo la última versión de Python 2.7.X o 3.X en Ubuntu?, Intenté instalar python 2.7.15
desde deadsnakes
ppa. Pero, misteriosamente, python 2.7.xx
ni siquiera aparece en la página de ppa (https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa), aunque 2.3, 2.4, 2.5, 2.6
están todos disponibles. Luego, intenté construirlo manualmente según las instrucciones enhttp://www.linuxfromscratch.org/blfs/view/svn/general/python2.html, pero resulta que python 2.7.15
se instala en una ubicación separada ( /usr/local/bin
etc.) y no reemplaza a python 2.7.12
. Entonces los errores de impresión de gdb todavía están presentes.
¿Hay alguna manera de reemplazar completamente el instalado python 2.7.12
? Incluso si puedo usar el archivo binario de Python correcto, tendré que cambiar la ubicación de la biblioteca para los archivos de desarrollo a la de la nueva versión y es posible que se reconstruyan gdb-8.1
con esos archivos de Python-dev. Porque de lo contrario veo errores como:
Traceback (most recent call last):
File "/usr/share/gdb/python/gdb/__init__.py", line 144, in auto_load_packages
__import__(modname)
File "/usr/share/gdb/python/gdb/command/pretty_printers.py", line 19, in <module>
import copy
File "/usr/lib/python2.7/copy.py", line 52, in <module>
import weakref
File "/usr/lib/python2.7/weakref.py", line 14, in <module>
from _weakref import (
ImportError: cannot import name _remove_dead_weakref
cuando comienzo gdb
. Si nada ayuda, es posible que tenga que actualizar (no es deseable) al Ubuntu-18.04
que viene con python 2.7.15rc
y gdb-7
, aunque gdb-8
la versión experimental está disponible en los repositorios.
Preguntas similares a esta no han sido tan específicas y no me han ayudado a resolver el problema.