web-dev-qa-db-ja.com

gdbが使用するPythonインタプリタを変更する方法は?

私はubuntu 14.04を使用しています。python3はデフォルトのシステムパッケージです。

Python2.7プログラムをgdbでデバッグしたいのですが、この問題が発生するようです。

Gdbの場合、pyコマンドを使用するとインタープリターに入るので、これらのコマンドをインタープリターで実行しました。

まず、インタープリターのバージョンを確認します。

(gdb) py
>import sys
>print(sys.version)
>end
3.4.0 (default, Apr 11 2014, 13:08:40) 
[GCC 4.8.2]

次に、使用されているインタープリター実行可能ファイルを確認します

(gdb) py
>import sys
>print(sys.executable)
>end
/usr/bin/python
(gdb) 

次に、bashでインタープリターを確認します。

12:34]hostname ~ $ls -l /usr/bin/python 
lrwxrwxrwx 1 root root 9 Dec 21  2013 /usr/bin/python -> python2.7

したがって、gdbは私の2.7インタープリターを使用していると言っていますが、実際には別のインタープリターを使用しています。 python ubuntuパッケージ 'python2.7-dbg'が提供する特定の拡張機能で使用できるようにするには、2.7インタープリターが必要です。 python 3.4まだ、あるとしても、デバッグしたいプログラムが実行されますpython 2.7

私の質問は、どのようにして私が望むインタープリターを使用するようにするのですか?

[編集]python3をアンインストールしないでくださいところで。私はubuntu 14.04でそれをしました、そしてそれは私のシステムを破壊しました。それを再び立て直すことができませんでした。私は現在、ウィンドウマネージャーなしでそれを使用しています(それはクールで1337です)が、あなたはそのアイデアを理解しています。

26
vlad-ardelean

だからgdbは私の2.7インタープリターを使っていると言っていますが

GDBはそれを言っていません。それは3.4.0を使用しており、そのインタプリタはlibpython3.4.aまたはlibpython3.4.soの形式のリンク先 GDBであると述べています。

実際のPythonバイナリは含まれていないため、ここでの(マイナーな)バグはsys.executable/usr/bin/pythonを返すことです。/usr/bin/gdb代わりに。

2.7通訳が必要です

その場合、適切な--with-python値で構成した後、ソースからgdbを再構築する必要があります。

16
$ apt-get -qq update
$ apt-get install gdb python2.7-dbg python3-all-dbg
$ gdb -ex r -ex quit --args python2 -c "import sys ; print(sys.version)" # Py2.7
$ gdb -ex r -ex quit --args python3 -c "import sys ; print(sys.version)" # Py3.6
0
cclauss