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()

    回覆刪除

C++ 能否用 memcpy 複製 class / struct 的資料?

答案是: POD (plain old data) type 可以。POD type 可和 C 互通, CPP Reference POD Type 的介紹: Specifies that the type is POD (Plain Old Data) type. Thi...