1
我有一個Python C API擴展模塊,偶爾會遇到一個無用的「MemoryError」。這顯然不是模塊的異常處理程序迎合的錯誤。如何獲得更豐富的錯誤回溯信息,以便我可以找出擴展模塊中出現了什麼問題?從Python獲取回溯C API
也許問題應該是,鑑於我確實有擴展模塊源代碼,我應該怎麼做才能在MS Windows上使用MSVC獲取它的可調試版本?
我有一個Python C API擴展模塊,偶爾會遇到一個無用的「MemoryError」。這顯然不是模塊的異常處理程序迎合的錯誤。如何獲得更豐富的錯誤回溯信息,以便我可以找出擴展模塊中出現了什麼問題?從Python獲取回溯C API
也許問題應該是,鑑於我確實有擴展模塊源代碼,我應該怎麼做才能在MS Windows上使用MSVC獲取它的可調試版本?
看起來擴展模塊聲稱內存不足 - 無論是真的還是假的,當然,如果不查看擴展的來源,這是不可能分辨的。萬一這是真的,這樣的內存短缺可能阻礙回溯,一個老把戲是讓一些內存早些時候reraising之前放棄它在錯誤的情況下,例如:
reserve = [None] * 10000
try: amodule.somecall()
except MemoryError:
del reserve
raise
這不會告訴你比哪個Python可見的函數引發的錯誤更多(以及Python函數稱之爲什麼等)。爲了超越這一點,您需要編譯擴展的C源代碼進行調試,並使用一些工具(如gdb)。
是的,你是對的。我編輯了我的問題。我真正想要做的是調試模塊,因爲我知道哪個python調用觸發了該錯誤。 – TheObserver 2010-04-06 00:57:31