Android NDK崩溃日志太大,无法找到错误

时间:2012-06-18 17:39:24

标签: android android-logcat android-ndk

我有一个Android应用程序使用JNI中的共享对象(我自己写的)导致了一个segault。但是,我正在调试它,因为每次崩溃时,我的/ dev / log / main都会出现如下消息:

06-18 12:50:31.069  2863  2863 I DEBUG   :     453b7608  ffffffff  
06-18 12:50:31.069  2863  2863 I DEBUG   :     453b760c  ffffffff  
06-18 12:50:31.069  2863  2863 I DEBUG   :     453b7610  ffffffff  
06-18 12:50:31.069  2863  2863 I DEBUG   :     453b7614  ffffffff  
06-18 12:50:31.069  2863  2863 I DEBUG   :     453b7618  ffffffff  
06-18 12:50:31.069  2863  2863 I DEBUG   :     453b761c  ffffffff  
06-18 12:50:31.069  2863  2863 I DEBUG   :     453b7620  ffffffff  
06-18 12:50:31.069  2863  2863 I DEBUG   :     453b7624  ffffffff  
06-18 12:50:31.069  2863  2863 I DEBUG   :     453b7628  ffffffff

有没有办法抑制手机上每个内存地址的输出,以便在堆栈跟踪中找到相关信息?

(更像是这样):

06-18 13:07:35.857 11350 11350 I DEBUG   : signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 452c7000
06-18 13:07:35.857 11350 11350 I DEBUG   :  r0 00000021  r1 452c66a0  r2 00000033  r3 0000003c
06-18 13:07:35.857 11350 11350 I DEBUG   :  r4 000000a1  r5 452c7000  r6 002cf880  r7 453c6b08
06-18 13:07:35.857 11350 11350 I DEBUG   :  r8 4051e618  r9 00020000  10 51eb851f  fp 81f03700
06-18 13:07:35.857 11350 11350 I DEBUG   :  ip 00000064  sp 452c6af8  lr 81f00e35  pc 81f00df8  cpsr 00000030
06-18 13:07:35.857 11350 11350 I DEBUG   :  d0  0000000000000000  d1  0000002f00000000
06-18 13:07:35.857 11350 11350 I DEBUG   :  d2  4da4480e423d3abc  d3  006f1fe04a5247c0
06-18 13:07:35.857 11350 11350 I DEBUG   :  d4  00000000003491f0  d5  0000000000000000
06-18 13:07:35.857 11350 11350 I DEBUG   :  d6  3f80000000000000  d7  43200000000000a0
06-18 13:07:35.857 11350 11350 I DEBUG   :  d8  0000000000000000  d9  0000000000000000
06-18 13:07:35.857 11350 11350 I DEBUG   :  d10 0000000000000000  d11 0000000000000000
06-18 13:07:35.857 11350 11350 I DEBUG   :  d12 0000000000000000  d13 0000000000000000
06-18 13:07:35.857 11350 11350 I DEBUG   :  d14 0000000000000000  d15 0000000000000000
06-18 13:07:35.857 11350 11350 I DEBUG   :  scr 60000012
06-18 13:07:35.857 11350 11350 I DEBUG   : 
06-18 13:07:35.887 11350 11350 I DEBUG   : tid 11348 not responding!

我主要在eclipse中使用DDMS透视图,但是必须使用adb shell来捕获主日志中的直接转储,因为eclipse中的窗口很快就会被淹没。这是一个不可接受的工作流程。

2 个答案:

答案 0 :(得分:0)

尝试在崩溃实际发生之前打开控制台,然后运行

adb logcat -s DEBUG | grep -v ffffffff > debug.log

您可以将logcat重定向到主机上的文件,并且可能会在崩溃后找到查看此巨大文件的方法。

答案 1 :(得分:0)

将logcat导入开发计算机上的文件

adb logcat > logfile

或者如果你有T恤,那就这样做,这样你也可以看到它飞过

adb logcat | tee logfile

然后在您喜欢的文本编辑器中打开文件并搜索感兴趣的项目

您还可以使用各种grep过滤器和管道进入寻呼机,例如更少或更多,但是存储到文件并在编辑器中检查您可以移动的地方更适合需要认真学习的问题。