编译程序,test1.c是程序文件名。执行程序,结果程序异常中断。查看系统dmesg信息,发现系统日志的错误信息:
    [54106.016179] test1[8352] trap divide error ip:400506 sp:7fff2add87e0 error:0 in test1[400000+1000]
    这条信息里的ip字段后面的数字就是test1程序出错时所程序执行的位置。使用addr2line就可以将400506转换成出错程序的位置:
    $ addr2line -e test1 400506
    /home/hanfoo/code/test/addr2line/test1.c:5

    这里的test1.c:5指的就是test1.c的第5行
    [cpp] view plaincopyprint?

    1. return a / b;

      return a / b;

    也正是这里出现的错误。addr2line帮助我们解决了问题。