我的 Python 代码一直崩溃并出现错误“GC Object already Tracked”。试图找出调试此崩溃的最佳方法。
操作系统:Linux。
- 是否有正确的方法来调试此问题。
下面的文章中有一些建议。 Python memory debugging with GDB
不确定哪种方法适合作者。
- 有没有办法在这种情况下生成可以分析的内存转储。就像在 Windows 世界中一样。
找到一些关于这个的文章。但不能完全回答我的问题: http://pfigue.github.io/blog/2012/12/28/where-is-my-core-dump-archlinux/
最佳答案
在我的场景中找到了这个问题的原因(不一定是 GC 对象崩溃的唯一原因)。 我使用 GDB 和核心转储来调试这个问题。
我有 Python 和 C 扩展代码(在共享对象中)。 Python 代码使用 C 扩展代码注册一个回调例程。 在某个工作流程中,来自 C 扩展代码的线程正在调用 Python 代码中已注册的回调例程。
这通常工作得很好,但是当多个线程同时执行相同的操作时,它会导致“GC 对象已被跟踪”的崩溃。
为多线程同步对 python 对象的访问确实解决了这个问题。
感谢任何对此做出回应的人。
关于python - 调试 Python fatal error : GC Object already Tracked,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23178606/