簡體   English   中英

如何更改 gdb 使用的 Python 解釋器?

[英]How to change the Python Interpreter that gdb uses?

我使用的是 ubuntu 14.04,其中 python3 是默認系統包。

我想用gdb調試Python2.7程序,但我似乎遇到了這個問題:

當我在 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 解釋器,但實際上它使用的是另一個解釋器。 我需要一個 2.7 解釋器才能將它與 ubuntu 包“python2.7-dbg”提供的 python 特定擴展一起使用,因為據我所知,python 3.4 還沒有這樣的包,即使有,我要調試的程序運行 python 2.7

我的問題是如何讓它使用我想要的解釋器?

[編輯]不要卸載 python3順便說一句。 我在 ubuntu 14.04 上完成了它,它破壞了我的系統。 沒能重新站起來。 我目前正在使用它而沒有窗口管理器(它很酷,1337),但你明白了。

所以雖然 gdb 說它使用的是我的 2.7 解釋器

GDB 沒有這么說。 它說它使用的是 3.4.0,並且該解釋器以libpython3.4.alibpython3.4.so的形式鏈接到GDB。

由於沒有涉及實際的 Python 二進制文件,因此這里的(小)錯誤是sys.executable返回/usr/bin/python 它可能會更好地返回/usr/bin/gdb

我需要一個 2.7 的解釋器

在這種情況下,您必須在使用適當--with-python值配置 gdb 后從源代碼重建gdb

無需重建 gdb。

只是以不同的方式調用它:

gdb -ex run --args /usr/bin/python2 test.py
$ 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM