通过堆栈找到crash的地方

本文通过一个具体的程序崩溃案例,详细解析了如何使用堆栈跟踪信息来定位问题所在,并最终确定崩溃发生在 libdhcps6.so 模块中的具体位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

11: 0x404ee384 (vfprintf+0x1bae), in module libc.so.6@0x404b3000

    10: 0x404f510e (_IO_fprintf+0x22), in module libc.so.6@0x404b3000

     9: 0x405fd4dc <unknown>, in module libdhcps6.so@0x405f9000

     8: 0x4060009a <unknown>, in module libdhcps6.so@0x405f9000

     7: 0x40084024 (wrapper_dispatch+0xa1), in module libwrapper.so@0x40082000

     6: 0x400842ad <unknown>, in module libwrapper.so@0x40082000

     5: 0x4008a196 <unknown>, in module liblistener.so@0x40089000

     4: 0x40089d15 (EnumerateListenerSet+0x7e), in module liblistener.so@0x40089000

     3: 0x4008a2cb (ListenLoop+0xa1), in module liblistener.so@0x40089000

     2: 0x080494c9 <unknown>, in module oss-daemon@0x08048000

     1: 0x404c86e8 (__libc_start_main+0x160), in module libc.so.6@0x404b3000

     0: 0x08049071 <unknown>, in module oss-daemon@0x08048000

 

 

 

由此看到  crash 的地方是 

     9: 0x405fd4dc <unknown>, in module libdhcps6.so@0x405f9000

 

基地址  0x405f9000

偏移地址 0x405fd4dc  -  0x405f9000  = 44dc

 

 

然后用 命令

   /opt/WG/x86-linux26-glibc24/bin/x86-objdump -S -l  /work/osu/components/networking/build/kennewick/target/lib/libdhcps6.so 

 

找到偏移地址的列表。 然后定位 crash的位置。

 

 

/work/osu/components/networking/src/lib/dhcps6/dhcps-wrap6.c:1617

                fprintf( fp, ", %s", p_ip_temp->fixed_ip );

    44c0:   89 7c 24 08             mov    %edi,0x8(%esp)

    44c4:   8b 95 0c fc ff ff       mov    -0x3f4(%ebp),%edx

    44ca:   89 54 24 04             mov    %edx,0x4(%esp)

    44ce:   8b 8d 78 fc ff ff       mov    -0x388(%ebp),%ecx

    44d4:   89 0c 24                mov    %ecx,(%esp)

    44d7:   e8 78 d0 ff ff          call   1554 <fprintf@plt>

/work/osu/components/networking/src/lib/dhcps6/dhcps-wrap6.c:1618

                p_ip_temp_next = p_ip_temp->p_next;

    44dc:   8b 77 10                mov    0x10(%edi),%esi

/work/osu/components/networking/src/lib/dhcps6/dhcps-wrap6.c:1619

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值