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

问题描述 投票:0回答:4

我使用的是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),但你明白了。

python python-2.7 gdb
4个回答
31
投票

所以虽然 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口译员

在这种情况下,您必须在使用适当的

gdb
值进行配置后,从源重建
--with-python


0
投票

不确定这是否普遍适用,但在使用 GDB 版本 9.2 的 Linux 中,而不是使用以下命令启动 GDB:

gdb python

我启动它:

gdb /path/to/python/i/want/to/use

并且有效。


-2
投票

无需重建gdb。

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

gdb -ex run --args /usr/bin/python2 test.py

-4
投票
$ 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
© www.soinside.com 2019 - 2024. All rights reserved.