调试 C++ 中的分段错误从 Python 调用的代码
我有一个运行 python 脚本的测试,该脚本调用 C++ 代码,在其中出现段错误并转储核心。我尝试使用 /usr/bin/python2.6 在 GDB 中加载核心文件,但这只是给了我??对于堆栈跟踪中的所有项目。如何调试这个核心文件?
I have a test that runs a python script, which calls into C++ code, where it segfaults and dumps core. I've tried to load the core file in GDB using /usr/bin/python2.6, but this just gives me ?? for all the items in the stack trace. How do I debug this core file?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要编译带有调试符号的Python版本。您可以通过使用
./configure --with-pydebug
构建 Python 来实现此目的。希望您能够通过这种方式找到错误。这将在某些方面改变 Python 内部的行为。如果您仍然没有以这种方式得到段错误,您可以尝试运行
./configure CFLAGS="-O0 -ggdb3"
甚至只是./configure CFLAGS=-ggdb3
。You need to compile a version of Python with debugging symbols. You can do this by building Python with
./configure --with-pydebug
. Hopefully you will be able to find the error that way.That will change the behavior of Python internally in some ways. If you don't still get the segfault that way, you might try running
./configure CFLAGS="-O0 -ggdb3"
or even just./configure CFLAGS=-ggdb3
.