当前位置:  开发笔记 > 编程语言 > 正文

使用GDB进行Python内存调试

如何解决《使用GDB进行Python内存调试》经验,为你挑选了1个好方法。

我们有一个Linux应用程序,它使用OpenSSL的Python绑定,我怀疑它会导致随机崩溃.偶尔,我们会看到它崩溃的消息:

Python致命错误:已跟踪GC对象

这似乎是库的编程错误,或内存损坏的症状.在给定核心文件的情况下,有没有办法知道它执行的最后一行Python源代码?或者如果它附加在GDB中?我意识到它可能都是编译后的字节码,但我希望有人可能已经解决了这个问题.目前它正在运行跟踪模块激活,我们希望它会再次发生,但可能需要很长时间.



1> Alex Coventr..:

是的,你可以做这样的事情:

(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

也应该可以使用pystackpython gdbinit文件中定义的命令,但它对我不起作用.如果你想研究它,这里讨论它.

此外,如果您怀疑内存问题valgrind,如果您准备重新编译它,值得注意的是您可以使用python.这里描述了该过程.

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有