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为例