Inferior 1 (process 663) exited with code 0177

调查过程:

1、使用gdb调试,问题发生时,程序已退出,没有捕获到信号,无法抓到堆栈信息,串口只输出日志:

[Inferior 1 (process 663) exited with code 0177]

2、没有捕获到信号则证明不是崩溃,也不是被kill,推测是主消息循环退出了,使用gdb断点调试,也排除了这个可能 ;

3、推测是某些模块调用了exit接口,使用atexit注册回调,gdb断点调试也排除这个可能 ;

4、重新分析日志,[Inferior 1 (process 663) exited with code 0177],经搜索0177的错误码网上大部人遇到的情况是符号未定义导致程序退出,但他们都有输出错误信息指明具体是哪个符号 未定义;

5、怀疑是系统将应用的串口日志禁用,导致无法输出错误信息,将应用串口日志打开后,应用闪退时就输出如下信息:

/usr/bin/XXXX: symbol lookup error: /usr/lib/libXXXX.so: undefined symbol: XXXX

 

经验教训:

1、其实符号未定义的问题,如果有串口信息是很容易定位到的,但是因为应用的串口日志被禁用导致调查走了很多弯路,所以在调查问题时应先将串口日志找开,避免错过重要信息。另外,后续如有遇到闪退时,gdb无法捕获到信息,就有可能是与此类似的情况。

2、另外发现在编译脚本中,使用了-Wl,--allow-shlib-undefined,导致在编译时未能识别出来问题,该编译参数慎用!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心猿亦码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值