私は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です)が、あなたはそのアイデアを理解しています。
だから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
を再構築する必要があります。
$ 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