gpt4 book ai didi

使用 GDB 进行 Python 内存调试

转载 作者:IT王子 更新时间:2023-10-29 01:12:27 31 4
gpt4 key购买 nike

我们有一个使用 OpenSSL 的 Python 绑定(bind)的 Linux 应用程序,我怀疑它会导致随机崩溃。有时,我们会看到它崩溃并显示以下消息:

Python Fatal Error: GC Object already tracked

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

最佳答案

是的,你可以做这种事:

(gdb) print PyRun_SimpleString("import traceback; traceback.print_stack()")
File "<string>", line 1, in <module>
File "/var/tmp/foo.py", line 2, in <module>
i**2
File "<string>", line 1, in <module>
$1 = 0

也应该可以使用 python gdbinit 中定义的 pystack 命令文件,但它对我不起作用。讨论了here如果你想调查一下。

此外,如果您怀疑内存问题,值得注意的是您可以使用 valgrind使用 python,如果你准备重新编译它。程序描述here.

关于使用 GDB 进行 Python 内存调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/273043/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com