最近做的一个东西需要jni去实现,对于一个我这样用惯了java,习惯了debug的人来说,用NDK,使用C/C++去编程是件很苦逼的事情,但是最苦逼的事情在于内存错误发生后如何排查,尤其是 Fatal signal 11 (SIGSEGV)这个错误尤其恼人,报出来之后程序就会崩溃,定位还不好定位,刚开始发生这样的错误时候,只能去到处加log,到处屏蔽代码去找问题发生的地方,效率比较低,并且很难找到问题真正出在哪,后来慢慢找到一些方法,可以相对比较快的定位到问题源头,一般情况下能相对容易的发现问题到底出在哪。下面简单的说说:
1:首先在logcat中加入debug(方法如图所示):
2:在运行后报错中会在debug中找到类似这样的一串错误