用 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. IPython 11 API 有不相容的改變:

    import IPython
    IPython.embed()

    回覆刪除

張貼留言

這個網誌中的熱門文章

(C/C++ ) 如何在 Linux 上使用自行編譯的第三方函式庫

熟悉系統工具好處多多

virtualbox 使用 USB 裝置