使用動態堆疊追蹤偵錯正在運行的Python 應用程式
在排除根本原因時,遇到偶爾的應用程式凍結可能會令人沮喪。 Python 提供了一種產生即時堆疊追蹤的機制,可讓您檢查目前正在執行的程式碼並識別有問題的位置。
使用訊號處理的解決方案
到獲取即時堆疊跟踪,請考慮使用以下程式碼:
<code class="python">import code, traceback, signal def debug(sig, frame): d={'_frame':frame} # Allow access to frame object. d.update(frame.f_globals) # Unless shadowed by global d.update(frame.f_locals) i = code.InteractiveConsole(d) message = "Signal received : entering python shell.\nTraceback:\n" message += ''.join(traceback.format_stack(frame)) i.interact(message) def listen(): signal.signal(signal.SIGUSR1, debug) # Register handler listen()</code>
用法:
這將觸發Python帶有當前堆疊追蹤的控制台並允許您探索變數。按 Ctrl-D 恢復執行。
其他選項
要調試後台進程,請考慮使用 Python Cookbook 配方中提供的基於管道的解決方案。
以上是如何使用動態堆疊追蹤偵錯正在運行的 Python 應用程式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!