私はバージョンUbuntu 16.04
で実行しています。 ( )にアップグレードすると、gdb が次のような Python エラーを出すようになりました:gdb
7.11.1-0ubuntu1~16.5
g++
g++-6.4
Ubuntu 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.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.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.04
python 2.7.15rc
gdb-7
gdb-8
これと似たような質問はそれほど具体的ではなく、問題の解決に役立ちませんでした。