如何转储整个Python进程以便以后进行调试?

ket*_*urn 23 python debugging coredump

我有一个处于奇怪状态的Python应用程序.我不想做这个过程的实时调试.我可以将其转储到文件中并稍后检查其状态吗?我知道我以后在gdb中恢复了C程序的核心文件,但我不知道如何从gdb中以有用的方式检查Python应用程序.

(这是关于在生产系统中调试memleaks的问题的变体.)

Tho*_*ers 6

除了中止(使用 os.abort(),在资源限制允许的情况下导致核心转储)之外,没有其他内置方法——尽管您当然可以构建自己的“转储”函数来转储有关您关心的数据的相关信息。没有现成的工具。

至于处理 Python 进程的 corefile,Python 源代码有一个 gdbinit 文件,其中包含有用的宏。它仍然比以某种方式进入过程本身(使用 pdb 或交互式解释器)要痛苦得多,但它让生活变得更容易一些。