debug的时候,经常遇到类似 Fatal signal 11 (SIGSEGV) at 0x2f64699f
如果是so文件有问题,可以使用addr2line来定位,addr2lien的路径类似如下:
android-sdk-windows\ndk-bundle\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin
使用
arm-linux-androideabi-addr2line -C -f -e libXXX.so 2f64699f
输出结果类似:
/home/hanfoo/code/test/addr2line/test1.c:5
结果中有文件名,有行号
问题
输出??:0
If the file name or function name can not be determined, addr2line will print two question marks in their place. If the line number can not be determined, addr2line will print 0.
摘自http://linuxcommand.org/man_pages/addr2line1.html
下面转自http://kukuqiu.iteye.com/blog/1168794
在Android.mk 文件中LOCAL_CFLAGS补充2个编译参数 -Wl,-Map=test.map -g
LOCAL_CFLAGS := -D__STDC_CONSTANT_MACROS -Wl,-Map=test.map -g
tip: 1,注意调试文件的位置在obj目录下,并非libs目录下生成的so文件
2,0024362e 为出错的机制位置
还有:
在jni/目录下增加Application.mk 文件, 修改为debug 模式,进行调试 APP_OPTIM := debug
具体application.mk 文件的配置见: http://blog.csdn.net/weidawei0609/article/details/6561280
来源:oschina
链接:https://my.oschina.net/u/2281329/blog/740859