簡體   English   中英

Emacs:調試python的方法

[英]Emacs: methods for debugging python

我使用emacs來滿足我的所有代碼編輯需求。 通常情況下,我會使用Mx編譯來運行我的測試運行器,我會說我得到了大約70%的我需要做的事情,以保持代碼正常,但最近我一直想知道如何使用Mx pdb打破斷點並檢查事情會很好的場合。

在我的谷歌搜索中,我發現了一些表明這是有用/可能的事情 但是我還沒有設法讓它以我完全理解的方式運作。

我不知道是否是buildout + appengine的組合可能會讓它變得更加困難但是當我嘗試做類似的事情時

M-x pdb
Run pdb (like this): /Users/twillis/projects/hydrant/bin/python /Users/twillis/bin/pdb /Users/twillis/projects/hydrant/bin/devappserver /Users/twillis/projects/hydrant/parts/hydrant-app/

其中... / bin / python是解釋器buildout使用為所有egg設置的路徑。

〜/ bin / pdb是一個使用當前python解釋器調用pdb.main的簡單腳本

HellooKitty:hydrant twillis$ cat ~/bin/pdb
#! /usr/bin/env python

if __name__ == "__main__":
    import sys
    sys.version_info
    import pdb
    pdb.main()
HellooKitty:hydrant twillis$ 

... / bin / devappserver是buildout配方為gae項目制作的dev_appserver腳本,而... / parts / hydrant-app是app.yaml的路徑

我第一次收到提示

Current directory is /Users/twillis/bin/
C-c C-f

什么都沒發生,但是

HellooKitty:hydrant twillis$ ps aux | grep pdb
twillis    469 100.0  1.6   168488  67188 s002  Rs+   1:03PM   0:52.19 /usr/local/bin/python2.5 /Users/twillis/projects/hydrant/bin/python /Users/twillis/bin/pdb /Users/twillis/projects/hydrant/bin/devappserver /Users/twillis/projects/hydrant/parts/hydrant-app/
twillis    477   0.0  0.0  2435120    420 s000  R+    1:05PM   0:00.00 grep pdb
HellooKitty:hydrant twillis$ 

事情正在發生

C-x [space]

將報告已設置斷點。 但我無法讓事情順利進行。

感覺我在這里遺漏了一些明顯的東西。 我呢?

那么,emacs中的交互式調試值得嗎? 可以互動調試谷歌appengine應用程序嗎? 關於我如何使這個工作的任何建議?

嗯。 你這樣做的方式與我有點不同。 我還沒有嘗試過你的方法。 我直接使用pdb庫模塊,沒有包裝器腳本,只需使用“-m”python命令行選項告訴python將模塊作為腳本運行。

為了過分徹底,這是我的操作順序:

  1. 我在EMACS中按Alt-X,輸入“pdb”,然后返回。
  2. EMACS提示我“運行pdb(像這樣):”然后輸入“python -m pdb myprogram.py”。
  3. EMACS為pdb創建一個調試器模式窗口,我可以在其中給出調試器命令,並跟蹤源代碼中程序的執行情況。

我想有可能出現這種情況,因為它與引擎不能很好地配合。 我建議首先使用一個簡單的python程序讓它工作,一旦你知道它正在工作,嘗試加緊完整的應用程序。

在實踐中,我沒有用pdb進行太多python調試。 我的大部分調試基本上都是“printf調試”,完成了將print語句插入到我的單元測試中,並(偶爾)插入到實際代碼中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM