我们有一个Linux应用程序,它使用OpenSSL的Python绑定,我怀疑它会导致随机崩溃.偶尔,我们会看到它崩溃的消息:
Python致命错误:已跟踪GC对象
这似乎是库的编程错误,或内存损坏的症状.在给定核心文件的情况下,有没有办法知道它执行的最后一行Python源代码?或者如果它附加在GDB中?我意识到它可能都是编译后的字节码,但我希望有人可能已经解决了这个问题.目前它正在运行跟踪模块激活,我们希望它会再次发生,但可能需要很长时间.
是的,你可以做这样的事情:
(gdb) print PyRun_SimpleString("import traceback; traceback.print_stack()") File "", line 1, in File "/var/tmp/foo.py", line 2, in i**2 File " ", line 1, in $1 = 0
也应该可以使用pystack
python gdbinit文件中定义的命令,但它对我不起作用.如果你想研究它,这里讨论它.
此外,如果您怀疑内存问题valgrind
,如果您准备重新编译它,值得注意的是您可以使用python.这里描述了该过程.