如何在Android上使用addr2line?

时间:2012-07-07 06:57:43

标签: android crash andengine addr2line

我的代码(在Android上使用AndEngine和PhysicsBox2DExtension的游戏)崩溃了,有人建议我使用addr2line,但我完全不知道如何去做,而且我看过的很多“教程”都非常模糊。也许有人可以给我一步一步的指示?

我正在使用Windows 7和Eclipse Indigo。我已下载Android NDK r8并将其保存到C:\ Program Files(x86)\ Android NDK \ android-ndk-r8。我的项目保存到C:\ Users \ Reese \ workspace \ TestGFX5。

stacktrace:

07-06 13:25:27.469: I/DEBUG(19582):          #00  pc 00011f74  /system/lib/libc.so
07-06 13:25:27.473: I/DEBUG(19582):          #01  pc 0001921e  /system/lib/libc.so
07-06 13:25:27.473: I/DEBUG(19582):          #02  pc 00026558  /data/data/com.prattia.webs.testgfx5/lib/libandenginephysicsbox2dextension.so
07-06 13:25:27.473: I/DEBUG(19582):          #03  pc 00013e7c  /data/data/com.prattia.webs.testgfx5/lib/libandenginephysicsbox2dextension.so
07-06 13:25:27.473: I/DEBUG(19582):          #04  pc 00016e34  /system/lib/libdvm.so

除此之外,我迷失了。请帮忙吗?

1 个答案:

答案 0 :(得分:3)

请改用ndk-stack。将原生日志崩溃保存在文件中,log.txt说,然后使用

$NDK_HOME/ndk-stack -sym $PROJECT_HOME/obj/local/armeabi -dump log.txt

当然,您的本机库必须使用调试符号进行编译。

来自doc:

  

'ndk-stack'是一个简单的工具,允许您将堆栈跟踪过滤为   它们出现在'adb logcat'的输出中并替换a中的任何地址   共享库以及相应的“source-file:line-number”值。