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

Susan Sarandon
发布: 2024-10-30 04:46:02
原创
536 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!