22.Eclipse下Ndk开发(使用ndk自带工具addr2line定位错误)

D:\application\java\android-ndk-r10e\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\bin>arm-linux-androideabi-addr2line -e C:\rzm\code\workspace-android\ndk_openSL\obj\local\armeabi\libOpenSLAudioPlayer.so 00001d4b
C:\rzm\code\workspace-android\ndk_openSL/jni/OpenSLAudioPlayer.cpp:230

进入ndk目录下
D:\application\java\android-ndk-r10e\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\bin>

使用工具arm-linux-androideabi-addr2line执行命令

arm-linux-androideabi-addr2line -e C:\rzm\code\workspace-android\ndk_openSL\obj\local\armeabi\libOpenSLAudioPlayer.so 00001d4b

其中-e表示的是错误级别
C:\rzm\code\workspace-android\ndk_openSL\obj\local\armeabi\libOpenSLAudioPlayer.so表示的是发生错误的so文件

00001d4b表示的是logcat打印出来的地址

也就是说只要你能定位到发生错误的地址,那么就可以使用这个命令将这个地址转换成代码中的具体在第几行,

D:\application\java\android-ndk-r10e\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\bin>arm-linux-androideabi-addr2line -e C:\rzm\code\workspace-android\ndk_openSL\obj\local\armeabi\libOpenSLAudioPlayer.so 00001d4b
C:\rzm\code\workspace-android\ndk_openSL/jni/OpenSLAudioPlayer.cpp:230

可以看到错误发生在\rzm\code\workspace-android\ndk_openSL/jni/OpenSLAudioPlayer.cpp文件的第230行

具体的平台根据实际开发选择,这里是以arm为例

你可能感兴趣的:(22.Eclipse下Ndk开发(使用ndk自带工具addr2line定位错误))