使用addr2line分析代码错误

来源:互联网 发布:华讯网络笔试题 编辑:程序博客网 时间:2024/06/07 09:57
编写一个程序wang.c内容如下:
#include <stdio.h>  
  
int func(int a, int b)  
{  
  return a / b;  
}  
  
int main()  
{  
  int x = 10;  
  int y = 0;  
  printf("%d / %d = %d\n", x, y, func(x, y));  
  return 0;  
}  


测试流程:
gcc -o wang -g wang.c
执行生成的wang程序。会发现出错。如下所示:
Floating point exception (core dumped)


利用addr2line找到出错的位置。
1、先执行 dmesg | grep "wang"找到执行错误提示如下:
[2877299.687745] wang[29936] trap divide error ip:400506 sp:7fffe31a2ef0 error:0 in wang[400000+1000]
2、找到它的ip为400506,利用addr2line -e wang 400506这条命令,显示如下。
/home/wangkang/wang/C/addr2line/wang.c:5 说明addr2line这个代码处第五行出错,即return a/b处。
0 0
原创粉丝点击