编写一个程序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处。
转载请注明原文地址: https://ju.6miu.com/read-3150.html