在 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.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)並沒有解決列印問題。

按照接受的答案如何在 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-7gdb-8

與此類似的問題並不那麼具體,也沒有幫助我解決問題。

相關內容