首页  >  文章  >  后端开发  >  如何获取正在运行的 Python 应用程序的堆栈跟踪?

如何获取正在运行的 Python 应用程序的堆栈跟踪?

Susan Sarandon
Susan Sarandon原创
2024-10-30 04:46:02529浏览

How to Get a Stack Trace of a Running Python Application?

检查正在运行的 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn