我们只有这个VLM系列:
kernel: myprog[16122] trap divIDe error rip:79dd99 rsp:2b6d2ea40450 error:0
我不相信有核心文件.
我通过互联网搜索了一下,我怎么能告诉导致这种除法的程序行为零,但到目前为止,我失败了.
我知道16122是程序的pID,所以这对我没有帮助.
我怀疑rsp:2b6d2ea40450与导致错误的行的地址(0x2b6d2ea40450)有关但是这是真的吗?
如果是,那么我怎样才能将它转换为源中的物理大致位置,假设我可以将myprog的调试版本加载到gdb中,然后请求显示该地址周围的上下文…
任何,任何帮助将不胜感激!
解决方法 rip是指令指针,rsp是堆栈指针.除非您有核心映像或正在运行的进程,否则堆栈指针并不太有用.您可以在gdb中使用addr2line或disassemble命令来查看基于ip的错误行.
$cat divtest.cmain(){ int a,b; a = 1; b = a/0;}$./divtestfloating point exception (core dumped)$dmesg|tail -1[ 6827.463256] traps: divtest[3255] trap divIDe error ip:400504 sp:7fff54e81330 error:0 in divtest[400000+1000]$addr2line -e divtest 400504./divtest.c:5$gdb divtest(gdb) disass /m 0x400504Dump of assembler code for function main:2 { 0x00000000004004f0 : push %rbp 0x00000000004004f1 : mov %rsp,%rbp3 int a,b;4 5 a = 1; b = a/0; 0x00000000004004f4 : movl x1,-0x4(%rbp) 0x00000000004004fb : mov -0x4(%rbp),%eax 0x00000000004004fe : mov x0,%ecx 0x0000000000400503 : cltd 0x0000000000400504 : idiv %ecx 0x0000000000400506 : mov %eax,-0x8(%rbp)6 } 0x0000000000400509 : pop %rbp 0x000000000040050a : retq End of assembler dump.总结
以上是内存溢出为你收集整理的linux – 如何将内核陷阱划分错误rsp:2b6d2ea40450转换为源位置?全部内容,希望文章能够帮你解决linux – 如何将内核陷阱划分错误rsp:2b6d2ea40450转换为源位置?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)