Обновление до python 2.7.15 (для gdb 8) на Ubuntu 16.04

Обновление до python 2.7.15 (для gdb 8) на Ubuntu 16.04

Я работаю 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из deadsnakesppa. Но, как ни странно, 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экспериментальная версия доступна в репозиториях.

Подобные вопросы не были столь конкретными и не помогли мне решить проблему.

Связанный контент