2010年1月17日 星期日

用 code.InteractiveConsole() 協助除錯

這篇提供一段程式說明如何讓執行中的程式收到 signal 後叫出 interactive console, 很實用的技巧。對我來說, 用在 unit test fail 時正好。

若比對的資料稍微複雜, 看到 test failed 後還是不明白錯在那裡。這時可以進入互動模式, 方便察看相關變數, 就像用 debugger 觀察局部變數一樣。只要在程式裡這麼寫:
import code
code.InteractiveConsole(locals=locals()).interact()
就能叫出 interactive console, 接著就可隨意觀察啦。

若有裝 ipython 的話, 用 ipython 更方便, 還支援 code completion:
import IPython;
IPython.Shell.IPShellEmbed()()

1 則留言:

  1. IPython 11 API 有不相容的改變:

    import IPython
    IPython.embed()

    回覆刪除

在 Fedora 下裝 id-utils

Fedora 似乎因為執行檔撞名,而沒有提供 id-utils 的套件 ,但這是使用 gj 的必要套件,只好自己編。從官網抓好 tarball ,解開來編譯 (./configure && make)就是了。 但編譯後會遇到錯誤: ./stdio.h:10...