Upgrade auf Python 2.7.15 (für GDB 8) unter Ubuntu 16.04

Upgrade auf Python 2.7.15 (für GDB 8) unter Ubuntu 16.04

Ich verwende Ubuntu 16.04die gdbVersion 7.11.1-0ubuntu1~16.5. Als ich g++auf g++-6.4( Ubuntu 6.4.0-17ubuntu1~16.04) aktualisiert habe, begann gdb, Python-Fehler wie die folgenden auszugeben:

Python Exception <class 'TypeError'> expected string or bytes-like object: 
Error while executing Python code.

immer wenn ich beim Debuggen versuche, eine Klasse oder ein STL-Objekt zu drucken. Ich habe festgestellt, dass nur gdb-8unterstützt wird , also habe ich versucht, nach den Anweisungen auf g++-6.4zu erstellengdb-8.1http://www.linuxfromscratch.org/blfs/view/cvs/general/gdb.html, gdb-8.1erfordert aber python 2.7.15, und die bloße Installation gdb-8.1ohne Upgrade von Python (die installierte Version ist 2.7.12) hat die Druckprobleme nicht gelöst.

Nach der akzeptierten Antwort unterWie installiere ich das neueste Python 2.7.X oder 3.X auf Ubuntu?python 2.7.15, ich habe versucht, vom PPA aus zu installieren deadsnakes. Aber auf mysteriöse Weise python 2.7.xxist es nicht einmal auf der PPA-Seite aufgeführt (https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa), obwohl 2.3, 2.4, 2.5, 2.6alle verfügbar sind. Dann habe ich versucht, es manuell zu bauen, basierend auf Anweisungen beihttp://www.linuxfromscratch.org/blfs/view/svn/general/python2.html, aber es stellt sich heraus, dass python 2.7.15an einem separaten Ort (usw.) installiert wird /usr/local/binund nicht ersetzt python 2.7.12. Die GDB-Druckfehler sind also immer noch vorhanden.

Gibt es eine Möglichkeit, die installierte Version vollständig zu ersetzen python 2.7.12? Selbst wenn ich die richtige Python-Binärdatei verwenden kann, muss ich den Bibliotheksspeicherort für die Entwicklungsdateien auf den der neuen Version ändern und möglicherweise gdb-8.1anhand dieser Python-Entwicklungsdateien neu erstellen. Denn sonst erhalte ich Fehler wie:

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

wenn ich starte gdb. Wenn nichts hilft, muss ich möglicherweise auf aktualisieren (nicht wünschenswert), Ubuntu-18.04das mit python 2.7.15rcund ausgeliefert wird gdb-7, obwohl gdb-8in den Repositories eine experimentelle Version verfügbar ist.

Ähnliche Fragen waren nicht so spezifisch und haben mir nicht bei der Lösung des Problems geholfen.

verwandte Informationen