Python subprocess.Popen - 如何在中止时捕获孩子的回溯

Python subprocess.Popen - How to capture childs backtrace upon abort

我想运行一个循环中的进程,如果进程returns0,我必须重新运行它。如果它中止,我必须捕获它的堆栈跟踪(回溯)。我正在使用 subprocess.Popen().communicate() 到 运行 这个过程。现在 .returncode 是 134,即 child 收到了 SIGABRT,有什么办法可以捕获 child 的回溯(堆栈跟踪)? 由于这是一个测试工具,我必须在将其转发给开发团队之前捕获所有必要的信息。

您可以做的是将 subprocess.Popen() 的 stdout 和 stderr 重定向到一个文件,然后再检查它。

这样做应该可以在 "process Termination" 之后检查回溯。

良好的日志记录机制将为您提供 :-) 希望这对您有所帮助。

感谢 this 网站和@Marco 的最后评论,我可以从核心获取回溯