2014-02-16 60 views
11

我使用python.el 如果我從菜單中選擇'調試',並輸入'python -m pdb myfile.py',gud開始,並在拆分框架我在一箇中看到(Pdb)提示符,另一個在我的Python代碼中,第一行中有一個插入符號,表示它已準備好去。例如,'n'步進到下一行,並且插入符相應地移動。使用ipdb與emacs'gud沒有明確的斷點在代碼

如果我輸入'python -m ipdb myfile.py',則框架會分裂,並且一個分裂被標記爲gud,但是沒有明顯的ipdb控制檯。換句話說,這種啓動ipdb的方式似乎不起作用。如果我使用ipdb.set_trace()手動插入斷點到我的python代碼中,Ipdb工作得很好,但它不使用gud接口。這是故意的,以便ipdb的堆棧跟蹤將很好地工作?

如果是這樣,那很好,但有沒有辦法從emacs啓動ipdb而無需手動添加set_trace()命令?

+0

它不適用於ipdb.set_trace() - 我只是掛了。你使用的是什麼版本的IPython和emacs?似乎其他人有同樣的問題:http://stackoverflow.com/questions/29425325/using-ipdb-for-debugging-python-inside-emacs –

回答

5

有基本的這裏的問題是,GUD正在尋找一個(Pdb)提示和IPDB不會提示這種方式。有三種方法來解決這個問題:解決IPDB給予(Pdb)提示,解決GUD不是需要尋找(Pdb)(我的最愛)用別的東西無論是在GUD一側或IPDB側。

問題與固定起來GUD是,它是比較舊的和我的腦子有點搖搖欲墜的使用全局變量,而不是利用其他可用比列表和利弊細胞的Emacs Lisp的數據結構。總重寫gud被稱爲realgud,它目前在MELPA中,並且在某些時候也將在ELPA中。但是現在它不支持ipdb。雖然有instructions for how one would add ipdb support

第二個選擇是使用別的東西,所以讓我建議它已經集成到realgud(但不GUD,因爲我認爲這是一個死衚衕)的Python trepan debugger。雖然它提供的回溯不完全像ipdb,但它會着色它們和源代碼。

+0

似乎trepan調試器是python 3只。那是對的嗎? – garyp

+0

它可以在python3和python2上運行,實際上統計數據似乎表明它在python2上更多地使用。要安裝python2:'pip install tr​​epan'。要安裝python3:'pip install tr​​epan3k'。 – rocky

+0

謝謝......我應該提到我的要求。您發佈的pypi鏈接以「Trepan家族中類似GDB的Python3調試器」開頭,除此之外,我找不到任何明確的聲明。 – garyp

相關問題