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

vla*_*ean 25 python gdb python-2.7

我正在使用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]
Run Code Online (Sandbox Code Playgroud)

然后我检查正在使用的解释器可执行文件

(gdb) py
>import sys
>print(sys.executable)
>end
/usr/bin/python
(gdb) 
Run Code Online (Sandbox Code Playgroud)

然后在bash中,我检查解释器:

12:34]hostname ~ $ls -l /usr/bin/python 
lrwxrwxrwx 1 root root 9 Dec 21  2013 /usr/bin/python -> python2.7
Run Code Online (Sandbox Code Playgroud)

因此虽然gdb说它使用我的2.7解释器,但实际上它正在使用另一个.我需要一个2.7解释器才能将它与ubuntu包'python2.7-dbg'提供的python特定扩展一起使用,因为据我所知,目前还没有这样的python 3.4包,即使有,我想调试的程序运行python 2.7

我的问题是我如何使用我想要的翻译?

[编辑] 不要卸载python3顺便说一句.我是在ubuntu 14.04上做的,它破坏了我的系统.无法再设法让它恢复正常.我目前正在使用它没有窗口管理器(它很酷和1337),但你明白了.

Emp*_*ian 16

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

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

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

我需要一个2.7解释器

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

  • @ChanKim:要查看哪个版本的 Python 库链接到您安装的 GDB,请尝试 `ldd $(which gdb) | 蟒蛇` (2认同)
  • 疯狂......我有一份与 JetBrains CLion 一起分发的 GDB 副本,我无法弄清楚它使用 ldd 链接到哪个 Python —— 不显示 libpython。但是,如果使用来自 JetBrains CLion 的 GDB 并且我运行命令 `python import sys` 然后是 `python print(sys.version)`,我看到 Python 解释器是 v2 而不是 v3。 (2认同)