以下段错误消息的正确解释是什么?segfault at 10 ip 00007f9bebcca90d sp 00007fffb62705f0 error 4 in libQtWebKit.so.4.5.2[7f9beb83a000+f6f000]segfault at 10 ip
以下段错误消息的正确解释是什么?
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]
错误 4 表示“原因是用户模式读取导致未找到页面”。 这里 .
这是内核中的定义。请记住,4 表示设置了位 2,而没有设置其他位。如果将其转换为二进制,就会变得清晰。
/*
* Page fault error code bits
* bit 0 == 0 means no page found, 1 means protection fault
* bit 1 == 0 means read, 1 means write
* bit 2 == 0 means kernel, 1 means user-mode
* bit 3 == 1 means use of reserved bit detected
* bit 4 == 1 means fault was an instruction fetch
*/
#define PF_PROT (1<<0)
#define PF_WRITE (1<<1)
#define PF_USER (1<<2)
#define PF_RSVD (1<<3)
#define PF_INSTR (1<<4)
现在,“ip 00007f9bebcca90d”表示发生段错误时指令指针位于 0x00007f9bebcca90d。
\'libQtWebKit.so.4.5.2[7f9beb83a000+f6f000]\' 告诉您:
如果你获取基地址并从 ip 中减去它,你就会得到该对象的偏移量:
0x00007f9bebcca90d - 0x7f9beb83a000 = 0x49090D
然后您可以在其上运行 addr2line:
addr2line -e /usr/lib64/qt45/lib/libQtWebKit.so.4.5.2 -fCi 0x49090D
??
??:0
就我而言,它没有成功,要么我安装的副本与您的不相同,要么它被剥离了。