以下段错误消息的正确解释是什么?
segfault at 10 ip 00007f9bebcca90d sp 00007fffb62705f0 error 4 in libQtWebKit.so.4.5.2[7f9beb83a000+f6f000]
segfault at 10 ip 00007fa44d78890d sp 00007fff43f6b720 error 4 in libQtWebKit.so.4.5.2[7fa44d2f8000+f6f000]
segfault at 11 ip 00007f2b0022acee sp 00007fff368ea610 error 4 in libQtWebKit.so.4.5.2[7f2aff9f7000+f6f000]
segfault at 11 ip 00007f24b21adcee sp 00007fff7379ded0 error 4 in libQtWebKit.so.4.5.2[7f24b197a000+f6f000]
原文由 knorv 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是一个段错误,因为跟随一个空指针试图找到要运行的代码(即在指令获取期间)。
如果这是一个程序,而不是共享库
运行
addr2line -e yourSegfaultingProgram 00007f9bebcca90d
(并重复给定的其他指令指针值)以查看错误发生的位置。更好的是,获得一个带有调试工具的构建,然后在 gdb 等调试器下重现问题。因为它是一个共享库
不幸的是,你被水洗了;事后动态链接器无法知道库在内存中的位置。重现
gdb
下的问题。错误是什么意思
以下是字段的细分:
address
(在at
之后)- 代码试图访问的内存位置(很可能10
和11
是偏移量 969cfc0307从我们期望设置为有效值但指向0
的指针ip
- 指令指针,即。尝试执行此操作的代码所在的位置sp
堆栈指针error
- 页面错误的错误代码;请参阅下文了解这在 x86 上的含义( 链接)。