python分段错误(内核转储)
我的python版本是python-2.7.3。我的程序运行了大约3个小时,做了同样的事情。但是,我得到了一个错误“分段错误(内核转储)”。我看了dmesg日志,明白了吗python分段错误(内核转储),python,c,Python,C,我的python版本是python-2.7.3。我的程序运行了大约3个小时,做了同样的事情。但是,我得到了一个错误“分段错误(内核转储)”。我看了dmesg日志,明白了吗 [466109.911462] python[8090]: segfault at 9c859249 ip 00000000004c79b8 sp 00007f3c8affa810 error 4 in python2.7[400000+21f000] [479310.742822] python[8127]: segfaul
[466109.911462] python[8090]: segfault at 9c859249 ip 00000000004c79b8 sp 00007f3c8affa810 error 4 in python2.7[400000+21f000]
[479310.742822] python[8127]: segfault at 7fadbbfffff8 ip 00007fadd233a9a3 sp 00007fadae7f9da8 error 4 in libc-2.15.so[7fadd21f8000+1b5000]
问题:如何调试错误?使用
objdump-d
反汇编二进制文件,并搜索位置0000000000 4C79B8
和00007fadd233a9a3
可能会给您一些想法,也可能不会
例如,在我的电脑上
objdump -d /lib/x86_64-linux-gnu/libc-2.17.so|less
libc-2.17的起始地址是7fadd21f8000
,因此我认为您必须从指针值中减去它
>>> hex(0x00007fadd233a9a3-0x7fadd21f8000)
'0x1429a3'
所以这就是你在libc中所寻找的(我认为)
至于python,不需要进行任何调整,因为可执行文件将链接到其首选地址。您就得到了这些吗?如果你能发布你的程序代码-可能会有帮助。对不起,我不能发布代码,因为它有点长。我想得到的是调试方法使用
nm
列出python2.7
和libc-2.15的符号。因此
-尝试找到指令指针0000000000 4C79B8
和00007fadd233a9a3
指向的符号(这些地址的单位可能略小于nm。除此之外,很难知道。啊,但无法从libc-2.17中获取符号。因此……如果您运气好,并且调试符号正确无误,那么有时这就是您可以获得的所有信息,并且必须根据这些信息进行调试。