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

时间:2014-10-07 19:44:21

标签: python python-2.7 gdb

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

2 个答案:

答案 0 :(得分:16)

  

所以尽管gdb说它使用我的2.7解释器

GDB并没有这么说。它说它使用3.4.0,并且该解释器libpython3.4.alibpython3.4.so的形式链接到 GDB。

由于没有涉及实际的Python二进制文件,这里的(次要)错误是sys.executable返回/usr/bin/python。它可能会更好地返回/usr/bin/gdb

  

我需要一个2.7解释器

在这种情况下,在使用适当的gdb值对其进行配置后,您必须从源重建--with-python

答案 1 :(得分:0)

$ 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