Crash, Crash, Crash

最近开发项目碰到了个很神奇的野指针问题,在arm64下正常,armv7a下炸了,然而这个项目是从C代码移植过来的,ndk那边只做了层CPP的封装,配置gradle的时候,直接指定了外部cmake,因此没办法直接用android studio调试,至少我不知道有什么办法可以导入源码。

然后你看logcat,炸了就一条简单的Fatal signal X,真的是让人摸不到头脑,本来想挂lldb的,但实在懒癌,不过没办法,就搜了下buildin的lldb在哪里,结果被引导到了谷歌的调试页面:

https://developer.android.com/ndk/guides/debug

上面说了如何使用 ndk-stack 工具来转换logcat的输出为详细的crash dump。

我这边用的是release编译,就在cmake生成的目录下面搜索了一下obj文件,最后在xx/app/build/intermediates/cmake/release/obj/<arch>下找到了带符号的so,并给工具传了过去。

结果图不方便给了,工具顺利的显示出了crash的具体位置以及原始代码的行数,这样debug起来就很方便了。

发表评论

邮箱地址不会被公开。 必填项已用*标注