检查正在运行的 Python 应用程序的堆栈跟踪
当 Python 应用程序意外挂起时,确定问题根源可能会很困难。幸运的是,有一些技术可以获取正在运行的应用程序的堆栈跟踪,使您可以查明应用程序停止时正在执行的特定代码。
使用自定义信号处理程序
显示堆栈跟踪的一种方法是使用自定义信号处理程序。该技术涉及向正在运行的应用程序发送信号,触发处理程序捕获堆栈跟踪并以交互方式显示它。下面是使用调试功能的示例:
<code class="python">import code, traceback, signal def debug(sig, frame): d={'_frame':frame} d.update(frame.f_globals) 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) </code>
调用listen()函数后,使用os.kill或kill向进程发送SIGUSR1信号将中断正在运行的应用程序,提供Python控制台与堆栈跟踪。
以上是如何获取正在运行的 Python 应用程序的堆栈跟踪?的详细内容。更多信息请关注PHP中文网其他相关文章!