Я работаю Ubuntu 16.04
с gdb
версией 7.11.1-0ubuntu1~16.5
. Когда я обновился g++
до g++-6.4
( Ubuntu 6.4.0-17ubuntu1~16.04
), gdb начал выдавать ошибки python, такие как:
Python Exception <class 'TypeError'> expected string or bytes-like object:
Error while executing Python code.
всякий раз, когда я пытаюсь распечатать класс или объект STL во время отладки. Я определил, что gdb-8
поддерживает только g++-6.4
, поэтому я попытался построить gdb-8.1
из инструкций наhttp://www.linuxfromscratch.org/blfs/view/cvs/general/gdb.html, но gdb-8.1
требует python 2.7.15
, и простая установка gdb-8.1
без обновления Python (установленная версия 2.7.12
) не решила проблемы с печатью.
После принятого ответа наКак установить последнюю версию Python 2.7.X или 3.X в Ubuntu?, я пытался установить python 2.7.15
из deadsnakes
ppa. Но, как ни странно, python 2.7.xx
его даже нет в списке на странице ppa (https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa), хотя 2.3, 2.4, 2.5, 2.6
все они доступны. Затем я попытался построить его вручную, следуя инструкциям наhttp://www.linuxfromscratch.org/blfs/view/svn/general/python2.html, но оказывается, что он python 2.7.15
устанавливается в отдельном месте ( /usr/local/bin
и т. д.) и не заменяет python 2.7.12
. Так что ошибки печати gdb все еще присутствуют.
Есть ли способ полностью заменить установленный python 2.7.12
? Даже если я могу использовать правильный двоичный файл python, мне придется изменить расположение библиотеки для файлов dev на то, что в новой версии, и, возможно, пересобрать gdb-8.1
эти файлы python-dev. Потому что в противном случае я вижу такие ошибки, как:
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
когда я начну gdb
. Если ничего не поможет, возможно, мне придется обновиться (нежелательно) до , Ubuntu-18.04
которая поставляется с python 2.7.15rc
и gdb-7
, хотя gdb-8
экспериментальная версия доступна в репозиториях.
Подобные вопросы не были столь конкретными и не помогли мне решить проблему.