2015-07-20 57 views
1

我想用gdb調試一個C++程序。我使用pipy命令來評估gdb中的python命令,當我從命令行調用gdb時,它可以正常工作。然而,當從使用M-x gdb然後gdb -i=mi file_name emacs的內調用GDB,會發生以下錯誤:gdb在emacs:python命令(py和pi)

  • pi命令正確地打開一個交互式蟒殼,但是任何輸入到該外殼產生這樣的錯誤:

File "stdin", line 1
-interpreter-exec console "2"
SyntaxError: invalid syntax

  • py命令可以正確處理一個命令(如py print 2+2),但不適用於多個命令

我可以通過啓動gdb gud-gdb來解決這些問題,但後來我沒有gdb-many-windows的支持。也許這個問題是由於輸入pi之後提示引起的,不再是(gdb),而是>>>而不是?

+0

是你想,當你得到這個錯誤運行什麼命令? 看起來問題在於emacs嘗試使用機器解釋器命令來運行「2」,就好像它是給予普通GDB命令行界面的命令一樣。但是Python解析輸入而不是GDB,它不理解GDB機器接口。你可以在沒有「-i = mi」命令的情況下運行gdb(使用常規的人機界面)嗎? – Matt

回答

1

我打算出去走一走,說這是一個在gud模式下的bug。線索是錯誤中的-interpreter-exec行。

這裏發生的是gud以特殊的「MI」(「Machine Interface」)模式運行gdb。在這種模式下,命令及其響應被設計爲機器而不是人類可讀的。

爲了讓圖形用戶界面爲用戶提供控制檯界面,MI提供了-interpreter-exec命令,該命令使用其他一些gdb「解釋器」來評估命令(這並不意味着你可能會想到什麼,特別是與Python無關)。

因此,gud發送用戶輸入到gdb,我相信,與-interpreter-exec console ...。但是,在繼續執行python命令的情況下,這是錯誤的。

我在Emacs嘗試了這一點,我能夠使它成爲python命令工作的時候拼寫出來 - 但pypipython-interactive都失敗了。

0

我在使用gdb 7.9.1構建和使用emacs 24.5.1時遇到了這個問題。

我沒有gdb命令行的問題,但與gdb-emacs奇怪的行爲。

我得到湯姆和user280107描述的行爲,根據命令和操作的順序:

(gdb) pi 
>>> print(123) 
    File "<stdin>", line 1 
    -interpreter-exec console "print(123) " 
          ^
SyntaxError: invalid syntax 
>>> 

但是,如果我先運行一個「蟒蛇XXX」命令時,它似乎工作(一些被遺忘初始化?):

(gdb) python print(123) 
123 
(gdb) pi 
pi 
>>> print(123) 
123 
>>> 

無論如何,我已發送一條消息到[email protected]

順便說一句,我敢肯定,湯姆T.知道的方式更多有關這比我做