addr2line ??:0可能原因

  • addr2line ??:0可能原因
    • 问题重现
    • 问题解决
    • 思考

addr2line ??:0可能原因

问题重现

  1. 编写一个异常程序(除零异常)

    //test.c
    #include <stdio.h>
    void crash(void)
    {
    int i=0;
    int j=1;
    int k=j/i;
    }
    int main()
    {crash();return 0;
    }
    
  2. 编译
    gcc -o test -g test.c
    
  3. 运行
      ./test
    
  4. 查看崩溃地址
    root@linx:/var/testhelper/programsymbols/root/test# dmesg -C
    root@linx:/var/testhelper/programsymbols/root/test# ./test
    Floating point exception
    root@linx:/var/testhelper/programsymbols/root/test# dmesg
    [3540868.730553] traps: test[4331] trap divide error ip:55d347e5067b sp:7ffdb3499f50 error:0
    [3540868.730567]  in test[55d347e50000+1000]
  5. 使用addr2line找出崩溃地址对应行。
    如果直接按照网上大多数说的ip后面的地址即是addr2line的输入的地址参数那么…就会出现输出为??:0的问题:

    root@linx:/var/testhelper/programsymbols/root/test# addr2line -e test 55d347e5067b
    ??:0
    

问题解决

其实就是最后面addr2line输入的地址并非其所接受的地址,addr2line接受的地址是相对偏移地址,例如作者的测试的系统为凝思系统,它dmesg输出的ip并非是崩溃地址相对偏移地址,需要减去基地址,即
55d347e5067b-55d347e50000=00000000067b,然后再使用addr2line工具分析

root@linx:/var/testhelper/programsymbols/root/test# addr2line -e test 00000000067b
/var/testhelper/programsymbols/tes.c:8

可以看到地位到了第8行。

思考

dmesg 输出ip对应的内容不同的操作系统内核含义可能不同,centos8测试输出ip地址即为相对偏移地址可以直接传给addr2line使用。两个方面:1.addr2line接受的参数含义(相对偏移地址)2.传入的地址是否为相对偏移地址(这里是dmesg输出的ip对应地址)。
ok,还是得多思考一下。

addr2line 输出为?:0可能原因相关推荐

  1. int输出%f浮点值是0,double/float 浮点数%d输出0的原因

    #include <cstdio> using namespace std; int main() {int a = 3;printf("int a print float : ...

  2. CvSVM::EPS_SVR train_auto assertion sv_count != 0 failed原因

    CvSVM::EPS_SVR train_auto assertion sv_count != 0 failed原因: 出现这种情况,一般表示你的训练集和结果数据集,没有输入到你的Mat结构中,如果用 ...

  3. JavaScript中的ParseInt(08)和“09”返回0的原因分析及解决办法

    今天在程序中出现一个bugger ,调试了好久,最后才发现,原来是这个问题. 做了一个实验: alert(parseInt("01")),当这个里面的值为01====>07时 ...

  4. oracle当查询没有输出返回0,[数据库] Oracle单表查询总数及百分比和数据横向纵向连接...

    这是最近项目关于SQL语句的,本文简单记录并总结以下几个知识点: 1.如何统计一张表中某个字段的总数,如不同"专业"的学生数及所占百分比: 2.如何联系另一张表进行查询某个字段的总 ...

  5. 电压比较器电路,当两个输入端全是相同电平时,输出什么电平?则相当于差模输入电压为零,不考虑失调或共模输出就应该输出为0

    运放开环使用是电压比较器,不是电平比较器.高电平的电压范围很宽,TTL电路中1.4+到5V全是高电平,1.4-到0V全是低电平,所以两个输入端全是高电平或全是低电平还要看电压谁高谁低.如果是两个输入端 ...

  6. C语言:根据整型形参m的值,计算如下公式的值: T=1-1/2x2-1/3x3...1/mxm; 例如,若m中的值为5,则应输出:0.536389。

    #include <stdio.h> /* 6.下列给定程序中,函数fun的功能是:根据整型形参m的值,计算如下公式的值. T=1-1/2x2-1/3x3-1/mxm; 例如,若m中的值为 ...

  7. caffe中batchnormal层的param参数lr_mult和decay_mult都为0的原因

    如下截取一部分train.prototxt的片段: layer {   name: "conv2_em/bn"   type: "BatchNorm"   bo ...

  8. python输出多个随机数_python怎么输出从0到100内的多个随机数

    python如何一次性取出多个随机数 怎么样用python做个程序.生成一个随机数构成的列表小编的口是心非,小编的言外之意,小编的无心之处,如果你懂. 请高手指教下.怎么样用python做个程序.生成 ...

  9. vue设置scrollLeft 一直为0的原因

    问题描述 <div class="icontent" ref="icontent" ><div class="box" r ...

最新文章

  1. css中的display属性之li元素
  2. Winograd,GEMM算法综述(CNN中高效卷积实现)(下)
  3. 【机器学习】HOG+SVM进行车辆检测的流程及源码
  4. 深度学习 vs SLAM
  5. ios两张图片的合并
  6. html媒体查询怎么把颜色换成图片,为网页中图片src添加媒体查询功能。
  7. Android中对话框的工具类
  8. C++之private虚函数
  9. rtt面向对象oopc——5.IO设备管理之快速查看设备父类调用设备子类的方法
  10. 模型加速:WAE-Learning a Wavelet-like Auto-Encoder to Accelerate Deep Neural Networks
  11. android volley post 参数,带有标题和正文的Android Volley POST请求
  12. MongoDB聚合(二)
  13. Python HackerRank 刷题 Pairs
  14. 6亿融资,今麦郎有底气上市吗?
  15. vc830l 说明书_有了解vc830l万用表使用方法的吗?
  16. k8s iptable升级到ipvs
  17. [计算机数值分析]直线拟合的最小二乘法
  18. 并发编程系列之Semaphore
  19. python之json数据库
  20. Linux-凝思6.0.80磐石网络配置-亲测过

热门文章

  1. 用C#和sql server语言编写的人事管理系统
  2. 彼得·德鲁克的一句话
  3. Linux中出现 tomcat几乎一样的多个进程?
  4. STM32单片机蓝牙APP GSM短信安全监控系统湿度烟雾入侵报警系统
  5. ROS-3DSLAM(十)lvi-sam源代码阅读8
  6. Paste mac键盘快捷方式
  7. android sleep
  8. 极简表格简历模板-Word简历可编辑下载
  9. 回归测试详解(定义目的、策略以及什么叫做回归等)
  10. ecshop 商品详情页商品放大镜功能