当前位置: 技术问答>linux和unix
哪位大侠指点下如何定位segfault at xxx rip xxx rsp xxx error 4???
来源: 互联网 发布时间:2016-09-06
本文导语: 一个后台程序,编译的时候加了 -g -ggdb,也生成了map文件,开了core dump 程序崩溃的时候生成了 core文件。gdb看了没有什么明显的信息。 #0 0x00000036aea9c9de in ?? () Cannot access memory at address 0x42399b50 /var/log/message中...
一个后台程序,编译的时候加了 -g -ggdb,也生成了map文件,开了core dump
程序崩溃的时候生成了 core文件。gdb看了没有什么明显的信息。
#0 0x00000036aea9c9de in ?? ()
Cannot access memory at address 0x42399b50
/var/log/message中有这样的信息
segfault at fffffffffffffffd rip 00000036aea9c9de rsp 0000000042841b60 error 4
请问如何根据 00000036aea9c9de 去map文件中查找相应的是哪个函数出问题了?
程序崩溃的时候生成了 core文件。gdb看了没有什么明显的信息。
#0 0x00000036aea9c9de in ?? ()
Cannot access memory at address 0x42399b50
/var/log/message中有这样的信息
segfault at fffffffffffffffd rip 00000036aea9c9de rsp 0000000042841b60 error 4
请问如何根据 00000036aea9c9de 去map文件中查找相应的是哪个函数出问题了?
|
需要反汇编,然后查找00000036aea9c9de对应的指令是哪个函数。光看map文件看不出来。
|
readelf -s a.out 可以查看符号表,就能找到对应的函数了。
objdump -d a.out > a.s 可以反汇编,不但能找到函数,还能直接定位到指令。
http://blog.csdn.net/eroswang/archive/2007/12/25/1967243.aspx
objdump -d a.out > a.s 可以反汇编,不但能找到函数,还能直接定位到指令。
http://blog.csdn.net/eroswang/archive/2007/12/25/1967243.aspx
|
用nm命令也可以