2014-10-07 33 views
19

我使用的是Ubuntu 14.04,其中python3是一個默認的系統軟件包。如何更改gdb使用的Python解釋器?

我想調試使用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 BTW。我在ubuntu 14.04上做了它,它破壞了我的系統。無法設法重新啓動它。我目前正在使用它沒有窗口管理器(這很酷,1337),但你明白了。

+1

爲什麼python 3默認? – 2014-10-07 20:17:04

+0

我想是因爲Ubuntu這麼說的..?我沒有多少讀,但https://wiki.ubuntu.com/Python/3這說很多腳本被移植到python 3(儘管不是全部)。在任何情況下,我的gdb安裝(或編譯或任何)加上python3 – 2015-04-17 14:49:09

+0

相關問題:https://bugs.launchpad.net/ubuntu/+source/gdb/+bug/1241668 – 2015-07-03 09:13:00

回答

14

所以,雖然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值配置之後。

+0

我可以知道我的gdb是如何扯皮? (我的意思是有什麼選擇?) – 2016-08-16 04:53:21

+1

@ChanKim:要查看哪個版本的Python庫鏈接到了你安裝的GDB,請試試'ldd $(which gdb)| grep python' – kevinarpe 2017-02-04 16:31:03

+1

@kevinarpe你建議的方法只適用於gdb與libpython動態鏈接的情況。使用的方法OP('print(sys。版本)')作品*永遠*。 – 2017-02-04 16:48:29