在 Windows 中显示停滞的 v2 Python.exe 应用程序中的堆栈跟踪

Show the stack trace from a stuck v2 Python.exe application in Windows

提问人:Daniel Kaplan 提问时间:11/11/2023 最后编辑:Daniel Kaplan 更新时间:11/19/2023 访问量:70

问:

赏金将在 12 小时后到期。这个问题的答案有资格获得 +50 声望赏金。丹尼尔·卡普兰(Daniel Kaplan)正在寻找来自信誉良好的来源的答案

我有与显示正在运行的 Python 应用程序的堆栈跟踪相同的问题,但有两个区别:我正在寻找适用于 Windows 10 和 Python v2 的答案。

我有这个 Python 应用程序不时卡住,我 找不到在哪里。

有没有办法向Python[.exe]发出信号,以向您显示确切的 正在运行的代码?

某种动态堆栈跟踪?

我把它作为一个文件运行,这样我就可以看到它的日志,但是当它像这样锁定时,什么也打印不出来。.bat

我可以访问源代码,但我不熟悉该级别的项目;理想情况下,我不需要编辑源代码来获取堆栈跟踪,但如果这是唯一的方法,我愿意这样做。我正在尝试收集足够的信息来为维护者编写有用的错误报告。

蟒蛇 windows python-2.7

评论

0赞 Christopher Hoffman 11/17/2023
可能是错误的,但要获取堆栈跟踪,您必须处理代码引发的异常并记录异常
1赞 Daniel Kaplan 11/17/2023
@ChristopherHoffman 有证据表明没有抛出任何错误。请参阅引用的文本。
1赞 karlphillip 11/17/2023
py-spy 应该可以工作......你试过吗?
0赞 Christopher Hoffman 11/20/2023
@DanielKaplan尝试使用 Eclipse 并安装 python 插件,那么您可以在调试模式下逐行运行代码并观察它并跟踪它在代码中的挂起位置。
0赞 Daniel Kaplan 11/21/2023
@ChristopherHoffman我不能一直让它挂起来。

答:

-1赞 Steve Yonkeu 11/17/2023 #1

尝试将 WinDbg 从 Windows 调试工具附加到 Python 进程,或在代码中使用回溯添加全局异常处理程序。

与此类似:

import traceback

try:
    # Your main application code here
except Exception as e:
    traceback.print_exc()

评论

0赞 Daniel Kaplan 11/19/2023
这并不理想,因为“理想情况下,我不需要编辑源代码来获取堆栈跟踪,但如果这是唯一的方法,我愿意这样做。更重要的是,“我有这个 Python 应用程序,它时不时卡住,我找不到在哪里。这个问题可能是一个无限循环,而不是一个“吞噬的例外”。
0赞 Steve Yonkeu 11/19/2023
您如何将信号处理与外部脚本一起使用?
0赞 Daniel Kaplan 11/20/2023
我不熟悉这样做。如果这是一个解决方案,请随时将其作为答案发布。谢谢