Ubuntu 16.04 で Python 2.7.15 (gdb 8 用) にアップグレードする

Ubuntu 16.04 で Python 2.7.15 (gdb 8 用) にアップグレードする

私はバージョンUbuntu 16.04で実行しています。 ( )にアップグレードすると、gdb が次のような Python エラーを出すようになりました:gdb7.11.1-0ubuntu1~16.5g++g++-6.4Ubuntu 6.4.0-17ubuntu1~16.04

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

デバッグ中にクラスまたはSTLオブジェクトを印刷しようとすると、 だけがサポートされることがわかりました。そのgdb-8ためg++-6.4gdb-8.1http://www.linuxfromscratch.org/blfs/view/cvs/general/gdb.htmlですが、 がgdb-8.1必要でありpython 2.7.15gdb-8.1Python をアップグレードせずにインストールするだけでは (インストールされているバージョンは2.7.12)、印刷の問題は解決されませんでした。

受け入れられた回答に従ってUbuntu に最新の Python 2.7.X または 3.X をインストールするにはどうすればよいですか?python 2.7.15、私はPPAからインストールしようとしましたdeadsnakes。しかし、不思議なことに、python 2.7.xxPPAページにも記載されていません(https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa2.3, 2.4, 2.5, 2.6がすべて利用可能であるにもかかわらず、私は以下の指示に基づいて手動でビルドしようとしました。http://www.linuxfromscratch.org/blfs/view/svn/general/python2.htmlpython 2.7.15ですが、 は別の場所 (/usr/local/binなど) にインストールされ、 は置き換えられないことが判明しましたpython 2.7.12。そのため、gdb 印刷エラーは依然として存在します。

インストールしたものを完全に置き換える方法はありますかpython 2.7.12? 正しい Python バイナリ ファイルを使用できる場合でも、dev ファイルのライブラリの場所を新しいバージョンのものに変更し、それらの python-dev ファイルに対して再構築する必要がありますgdb-8.1。そうしないと、次のようなエラーが表示されます。

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.04python 2.7.15rcgdb-7gdb-8

これと似たような質問はそれほど具体的ではなく、問題の解決に役立ちませんでした。

関連情報