我想利用python的自省功能進行調試/開發,但找不到合適的工具。python中交互式調試的最佳方式是什麼?
我需要在特定位置或特定事件(如異常)進入shell(例如IPython),並將shell的局部和全局變量設置爲幀的。
我自己的快速黑客來說明吧:
import inspect
from IPython.Shell import IPShellEmbed
def run_debug():
stack = inspect.stack()
frame = stack[1][0]
loc = frame.f_locals
glob = frame.f_globals
shell = IPShellEmbed()
shell(local_ns=loc, global_ns=glob)
在根據run_debug()從 '斷點' 呼叫或嘗試/除外。但是,顯然,這需要大量的改進,尤其是適當地使用線程應用程序。
winpdb與控制檯有斷點,但我發現沒有辦法從它快速運行適當的python shell,並且eval()/ exec()對於長時間調試不太方便。
謝謝,他們的Pro版本確實需要功能,它在運行shell之前暫停執行進程,所以線程並不是問題。 很遺憾它的專有,但似乎它是你得到什麼付費的情況。 – 2010-07-23 02:11:58
我想這是收費的好處之一 - 他們可以承擔僱用人並支付他們的費用,以解決類似問題;)當然,如果價格過高,您可以隨時環顧當地的python會議,並建議他們詢問翼爲一些贈送的副本。他們每年向我們提供3-4次我們所要求的信息,而我與他們交流過的每一次交易都令人印象深刻。 – 2010-07-23 12:26:57