在 Ubuntu 16.04 上升级到 python 2.7.15(适用于 gdb 8)

在 Ubuntu 16.04 上升级到 python 2.7.15(适用于 gdb 8)

我正在运行Ubuntu 16.04版本gdb7.11.1-0ubuntu1~16.5当我升级g++g++-6.4Ubuntu 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)并不能解决打印问题。

按照接受的答案如何在 Ubuntu 上安装最新的 Python 2.7.X 或 3.X?python 2.7.15,我尝试从ppa安装deadsnakes。但奇怪的是,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.15rcgdb-7尽管gdb-8可以从存储库中获取实验版本。

与此类似的问题没有那么具体,也没有帮助我解决问题。

相关内容