从文件重新创建回溯

Recreate traceback from file

我有一个由 faulthandler 在致命的解释器崩溃后创建的堆栈跟踪。其内容如下所示:

File "/path/to/file.py", line <line-number> in <function-name>
File "/path/to/file.py", line <line-number> in <function-name>

我想从这个文件创建一个追溯对象,类似于 sys.exc_info() 中的那个对象,以将其上传到哨兵。有没有什么模块可以让它更容易?

我不会有范围变量,但应该可以从回溯中捕获包含文件内容的 code 对象。

目前我能想到的唯一解决方案是创建一个 class 其行为类似于回溯对象,但这似乎需要很多工作(尤其是如果我想要代码)。

最后,我准备了我自己的 class,它充当回溯对象(使用 duck-typing)。唯一重要的是设置有效 f_code.co_filenamef_code.co_name 并且哨兵客户端将提取源代码。