NDK 函数定义了返回值,却没有返回,引发 signal 4 (SIGILL) 错误

      在做NDK开发的时候,引用了在嵌入式(非android平台)上的代码过来,明明原先正常使用的代码,移植过来就发生挂死,

由于代码太多,而LLDB又不能够跟踪到具体某一行的,只能一步一步地单步调试,最后发现了竞是 函数中定义了返回值,却没有返回 惹的祸。

错误信息

出错代码

打开编译警告

      鉴于此,为了检查还有多少代码有这种问题,得修改CMakefile,让所有有问题的地方发出警告,

给编译器加上 "-Wall" 将所有警告打开,(注意里面不要有 "-Wno-return-type"选项,因为这个正好是关闭这个警告的)

搜索编译警告信息

      这样,在编译输出信息里面搜索 "reaches end of non-void function",就可以搜索出所有的 定义了返回值,却没有返回的有问题的函数了。

(注意,要clean过再编译,不然会漏查了)

      有人说可以使用 "-Werror",这个我不建议,因为在多文件的情况下,某个文件编译遇到了错误,编译工作就停止了,

这样就不能一次性搜索到所有文件中有问题的函数了。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

carry210

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

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

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

打赏作者

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

抵扣说明:

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

余额充值