【教程分享】如何使用NDK-STACK tool来恢复Cocos2d-x安卓错误堆栈信息

小白android不是很懂,第一种办法 日志在哪里输入啊 又在输出在哪里;

第二种 是把 eclipse里面 logcat的日志保存 成txt, 然后

adb logcat > C:\Users\hp\Desktop\log.txt E:\tools\NDK\ndk-stack -sym E:\cocos2d-x-3.0rc0\projects\test\proj.android\obj\local\armeabi -dump log.txt

$NDK $PROJECT_PATH 这个可以写成绝对路径吧, 然后貌似没成功:5:

log 变成一堆提示了

Invalid filter expression ‘E:\tools\NDK\ndk-stack’

Usage: logcat

options include:

-s Set default filter to silent.

              Like specifying filterspec '*:s'

-f Log to file. Default to stdout

-r ] Rotate log every kbytes. (16 if unspecified). Requires -f

-n Sets max number of rotated logs to , default 4

-v Sets the log print format, where is one of:

              brief process tag thread raw time threadtime long

-c clear (flush) the entire log and exit

-d dump the log and then exit (don’t block)

-t print only the most recent lines (implies -d)

-g get the size of the log’s ring buffer and exit

-b Request alternate ring buffer, ‘main’, ‘system’, ‘radio’

              or 'events'. Multiple -b parameters are allowed and the

              results are interleaved. The default is -b main -b system.

-B output the log in binary

filterspecs are a series of

:priority]

where is a log component tag (or * for all) and priority is:

V Verbose

D Debug

I Info

W Warn

E Error

F Fatal

S Silent (supress all output)

’ means ':d’ and by itself means :v

楼上那个显然是没配置好啊

牛逼, 一次吃两个茶叶蛋…

膜拜土豪…

需要配置什么?:12:

这个比google 的breakpad好用吗?

mark,给力

:3::3:

不明所以然。
看不懂。好像很历害的样子。还是顶一下

什么意思?这是windows版本的?mac版本的怎么弄啊:2::2::2::2:

每次就显示这样一点信息
********** Crash dump: **********
Build fingerprint: ‘samsung/GT-I9100/GT-I9100:4.0.4/IMM76L/eng.build.20130311.12
2614:eng/release-keys’
pid: 3074, tid: 3111 >>> com.pinyoush.ddz3 <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr fffffffc

感谢分享 解决了我的问题

我想请问,为什么我的logcat出来的东西 前面不是 I/DEBUG ??? 下边是log的部分展示,还请指导下!

W/HDCP ( 99): Device not support HDCP, just exit.

I/HDCP ( 99): HDCP exiting

D/ScreenScaleManager( 99): i is 0

D/ScreenScaleManager( 99): i is 1

D/ScreenScaleManager( 99): i is 2

D/ScreenScaleManager( 99): i is 3

D/ScreenScaleManager( 99): i is 4

D/ScreenScaleManager( 99): MainDisplaySysNode is /sys/class/graphics/fb2/scale

D/ScreenScaleManager( 99): AuxDisplaySysNode is /sys/class/graphics/fb0/scale

D/ScreenScaleManager( 99): display 0, rate 95

--------- beginning of /dev/log/system

I/Vold ( 98): Vold 2.1 (the revenge) firing up

I/RegionTag( 109): ----------------running drmservice---------------

I/RegionTag( 109): ret=0, sn length=0

I/RegionTag( 109): SN Buffer=

I/RegionTag( 109): serialno in nand.

I/Netd ( 100): Netd 1.0 starting

W/InterfaceController( 100): Warning (Cannot load library: load_library(linker.cpp:745): library “/system/lib/libnetcmdiface.so” not found) while opening the net interface command library

I/RegionTag( 109): 0, , 30SWI23EKJ

I/RegionTag( 109): drm keybox disable!!

I/RegionTag( 109): detect keybox disabled

I/RegionTag( 109): unknown wifi chip , get it !!!. time=0

I/DEBUG ( 101): debuggerd: Sep 19 2014 00:37:12

D/InputEventConsistencyVerifier( 768): 1: sent at 251300000000, KeyEvent { action=ACTION_UP, keyCode=KEYCODE_MENU, scanCode=141, metaState=0, flags=0x8, repeatCount=0, eventTime=251300, downTime=251200, deviceId=0, source=0x101 }

D/InputEventConsistencyVerifier( 768): 2: sent at 251200000000, KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_MENU, scanCode=141, metaState=0, flags=0x8, repeatCount=0, eventTime=251200, downTime=251200, deviceId=0, source=0x101 }

D/InputEventConsistencyVerifier( 768): 3: sent at 204318107000, MotionEvent { action=ACTION_UP, id=0, x=653.125, y=516.09375, toolType=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=204318, downTime=203176, deviceId=2, source=0x1002 }

D/InputEventConsistencyVerifier( 768): 4: sent at 204308070000, MotionEvent { action=ACTION_MOVE, id=0, x=653.125, y=516.09375, toolType=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=204308, downTime=203176, deviceId=2, source=0x1002 }

D/InputEventConsistencyVerifier( 768): 5: sent at 204261011000, MotionEvent { action=ACTION_MOVE, id=0, x=653.125, y=516.09375, toolType=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=1, eventTime=204261, downTime=203176, deviceId=2, source=0x1002 }

V/TabletStatusBar( 460): setLightsOn(true)

D/dalvikvm( 1220): GC_EXPLICIT freed 70K, 1% free 12713K/12824K, paused 5ms+11ms, total 75ms

D/MediaPlayerFactory( 106): FILE:(/system/vendor/Game.apk) get STAGEFRIGHT_PLAYER

D/MediaPlayerFactory( 106): createPlayer:playerType=3

虽然我很想现在就试试 但还是等过几天项目正式版出了再搞吧

赶脚项目临近结束的时候提交代码的时候
都有强迫症了有没有:10::10::10:

********** Crash dump: **********
Build fingerprint: ‘generic/google_sdk/generic/:2.2/FRF91/43546:eng/test-keys’
pid: 351, tid: 351 >>> /data/local/ndk-tests/crasher <<<
signal 11 (SIGSEGV), fault addr 0d9f00d8
Stack frame #00 pc 0000841e /data/local/ndk-tests/crasher : Routine zoo in /tmp/foo/crasher/jni/zoo.c:13
Stack frame #01 pc 000083fe /data/local/ndk-tests/crasher : Routine bar in /tmp/foo/crasher/jni/bar.c:5
Stack frame #02 pc 000083f6 /data/local/ndk-tests/crasher : Routine my_comparison in /tmp/foo/crasher/jni/foo.c:9
Stack frame #03 pc 000191ac /system/lib/libc.so
Stack frame #04 pc 000083ea /data/local/ndk-tests/crasher : Routine foo in /tmp/foo/crasher/jni/foo.c:14
Stack frame #05 pc 00008458 /data/local/ndk-tests/crasher : Routine main in /tmp/foo/crasher/jni/main.c:19
Stack frame #06 pc 0000d362 /system/lib/libc.so
这些日志还是看的不是很明白,zoo.c:13 是说在zoo.cpp的第13行崩溃了的意思么? 希望能给讲解一下,感谢版主。

NDK-STACK tool这个是第三方工具还是Eclipse自带的呀?

adb logcat > crash.txt
这一句是用adb logcat工具把程序运行时的信息通过管道输出至crash.txt。当然你也可以把手机连上eclipse调试,然后把打印信息复制出来保存成crash.txt。

$NDK/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi -dump crash.txt
这一句是调用ndk-stack.exe复原crash.txt内容所指的崩溃堆栈。其中NDK是在环境变量里定义的android ndk根目录,PROJECT_PATH是在环境变量里定义的你的app编译目录。这两个变量都可以直接输入全路径(不用在环境变量里定义)。如果在windows环境变量中定义NDK和PROJECT_PATH,则在cmd里调用这个路径应当使用%NDK%和%PROJECT_PATH%,$符号是linux系统上的用法。

$NDK/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi -dump crash.txt > detail.txt
这句可以将还原的崩溃堆栈输出到detail.txt中

谢谢,正好解决我的苦恼。终于找到崩溃的地址。

楼主,或者其他人还在么?

楼主,或者其他人还在么?你好。你是怎么解决的,我这比那还是一大推.so,并没有行号提示啊

你好,我这边还是一堆.so文件,没有具体信息