我一直在尝试调试没有Java Stack Trace的情况下发生的机器人崩溃... Java Stack Trace错误很容易让我修复......但是我得到的这个bug似乎在崩溃里面“NDK”或其他什么东西都被称为Android ...我没有修改NDK顺便说一句......我只是不知道还有什么叫那层嘿嘿。
无论如何,我主要是寻求有关深度调试方法的建议,而不是帮助解决这个特定的问题...因为我怀疑我可以发布涉及的所有源代码...所以我真的需要知道如何在深层设置断点或其他任何方法来跟踪深度崩溃到它们的源...所以我将简要描述该bug,然后发布一个LogCat。
我有7个活动的应用
Activity_INTRO
Activity_EULA
Activity_MAIN
Activity_Contact
Activity_News
Activity_Library
Activity_More
INTRO是初始的...它在一些公司徽标中消失...在显示它们一段时间之后它跳转到EULA活动...在用户接受EULA之后,它跳转到MAIN ... MAIN然后创建一个TabHost并用剩余的4个活动填充它
现在发生了事情...当我点击说TabHost的更多选项卡时,应用程序暂停几秒然后硬崩溃......没有Java堆栈跟踪,但是实际的ASM级别跟踪寄存器和IP和堆栈...无论我选择哪个选项卡,联系人,新闻,图书馆,更多......同样的事情都会发生...所有这些都崩溃了同样的硬崩溃
但是,如果我将清单设置为在Activity_MAIN上启动应用程序,绕过INTRO和EULA,那么这些崩溃就不会发生......所以某些东西从那些以某种方式冲刷TabHost'ed活动的开放活动中挥之不去。我想知道到底是怎么回事......因为当他们需要跳的时候我会在那些活动上使用finish()...事实上这就是我在做的事情让我知道如果你看到了任何错误:
从INTRO跳到EULA时我做了:
//Display the EULA
Intent newIntent = new Intent (avi, Activity_EULA.class);
startActivity (newIntent);
finish();
and EULA to MAIN:
Intent newIntent = new Intent (this, Activity_Main.class);
startActivity (newIntent);
finish();
无论如何,这是硬崩溃日志...请告诉我是否有某种方法我可以进行逆向工程
/system/lib/libcutils.so
或/system/lib/libandroid_runtime.so
,因为我认为崩溃发生在其中一个......我认为它实际上发生在libandroid_runtime中......反正在日志中:
12-25 00:56:07.322: INFO/DEBUG(551): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
12-25 00:56:07.332: INFO/DEBUG(551): Build fingerprint: 'generic/sdk/generic/:1.5/CUPCAKE/150240:eng/test-keys'
12-25 00:56:07.362: INFO/DEBUG(551): pid: 722, tid: 723 >>> com.killerapps.chokes <<<
12-25 00:56:07.362: INFO/DEBUG(551): signal 11 (SIGSEGV), fault addr 00000004
12-25 00:56:07.362: INFO/DEBUG(551): r0 00000004 r1 40021800 r2 00000004 r3 ad3296c5
12-25 00:56:07.372: INFO/DEBUG(551): r4 00000000 r5 00000000 r6 ad342da5 r7 41039fb8
12-25 00:56:07.372: INFO/DEBUG(551): r8 100ffcb0 r9 41039fb0 10 41e014a0 fp 00001071
12-25 00:56:07.382: INFO/DEBUG(551): ip ad35b874 sp 100ffc98 lr ad3296cf pc afb045a8 cpsr 00000010
12-25 00:56:07.552: INFO/DEBUG(551): #00 pc 000045a8 /system/lib/libcutils.so
12-25 00:56:07.572: INFO/DEBUG(551): #01 lr ad3296cf /system/lib/libandroid_runtime.so
12-25 00:56:07.582: INFO/DEBUG(551): stack:
12-25 00:56:07.582: INFO/DEBUG(551): 100ffc58 00000000
12-25 00:56:07.592: INFO/DEBUG(551): 100ffc5c 001c5278 [heap]
12-25 00:56:07.602: INFO/DEBUG(551): 100ffc60 000000da
12-25 00:56:07.602: INFO/DEBUG(551): 100ffc64 0016c778 [heap]
12-25 00:56:07.602: INFO/DEBUG(551): 100ffc68 100ffcc8
12-25 00:56:07.602: INFO/DEBUG(551): 100ffc6c 001c5278 [heap]
12-25 00:56:07.612: INFO/DEBUG(551): 100ffc70 427d1ac0
12-25 00:56:07.612: INFO/DEBUG(551): 100ffc74 000000c1
12-25 00:56:07.612: INFO/DEBUG(551): 100ffc78 40021800
12-25 00:56:07.612: INFO/DEBUG(551): 100ffc7c 000000c2
12-25 00:56:07.612: INFO/DEBUG(551): 100ffc80 00000000
12-25 00:56:07.612: INFO/DEBUG(551): 100ffc84 00000000
12-25 00:56:07.622: INFO/DEBUG(551): 100ffc88 00000000
12-25 00:56:07.622: INFO/DEBUG(551): 100ffc8c 00000000
12-25 00:56:07.622: INFO/DEBUG(551): 100ffc90 df002777
12-25 00:56:07.632: INFO/DEBUG(551): 100ffc94 e3a070ad
12-25 00:56:07.632: INFO/DEBUG(551): #00 100ffc98 00000000
12-25 00:56:07.632: INFO/DEBUG(551): 100ffc9c ad3296cf /system/lib/libandroid_runtime.so
12-25 00:56:07.632: INFO/DEBUG(551): 100ffca0 100ffcd0
12-25 00:56:07.642: INFO/DEBUG(551): 100ffca4 ad342db5 /system/lib/libandroid_runtime.so
12-25 00:56:07.642: INFO/DEBUG(551): 100ffca8 410a79d0
12-25 00:56:07.642: INFO/DEBUG(551): 100ffcac ad00e3b8 /system/lib/libdvm.so
12-25 00:56:07.652: INFO/DEBUG(551): 100ffcb0 410a79d0
12-25 00:56:07.652: INFO/DEBUG(551): 100ffcb4 0016bac0 [heap]
12-25 00:56:07.662: INFO/DEBUG(551): 100ffcb8 ad342da5 /system/lib/libandroid_runtime.so
12-25 00:56:07.662: INFO/DEBUG(551): 100ffcbc 40021800
12-25 00:56:07.662: INFO/DEBUG(551): 100ffcc0 410a79d0
12-25 00:56:07.662: INFO/DEBUG(551): 100ffcc4 afe39dd0
12-25 00:56:07.662: INFO/DEBUG(551): 100ffcc8 100ffcd0
12-25 00:56:07.662: INFO/DEBUG(551): 100ffccc ad040a8d /system/lib/libdvm.so
12-25 00:56:07.672: INFO/DEBUG(551): 100ffcd0 41039fb0
12-25 00:56:07.672: INFO/DEBUG(551): 100ffcd4 420000f8
12-25 00:56:07.672: INFO/DEBUG(551): 100ffcd8 ad342da5 /system/lib/libandroid_runtime.so
12-25 00:56:07.672: INFO/DEBUG(551): 100ffcdc 100ffd48
12-25 00:56:07.852: DEBUG/dalvikvm(722): GC freed 367 objects / 15144 bytes in 210ms
12-25 00:56:08.081: DEBUG/InetAddress(722): www.akillerapp.com: 74.86.47.202 (family 2, proto 6)
12-25 00:56:08.242: DEBUG/dalvikvm(722): GC freed 62 objects / 2328 bytes in 122ms
12-25 00:56:08.771: DEBUG/dalvikvm(722): GC freed 245 objects / 11744 bytes in 179ms
12-25 00:56:09.131: INFO/ActivityManager(577): Process com.killerapps.chokes (pid 722) has died.
12-25 00:56:09.171: INFO/WindowManager(577): WIN DEATH: Window{43719320
com.killerapps.chokes/com.killerapps.chokes.Activity_Main paused=false}
12-25 00:56:09.251: INFO/DEBUG(551): debuggerd committing suicide to free the zombie!
12-25 00:56:09.291: DEBUG/Zygote(553): Process 722 terminated by signal (11)
12-25 00:56:09.311: INFO/DEBUG(781): debuggerd: Jun 30 2009 17:00:51
12-25 00:56:09.331: WARN/InputManagerService(577): Got RemoteException sending
setActive(false) notification to pid 722 uid 10020
答案 0 :(得分:4)
该崩溃似乎来自Android固件。 SDK开发人员不应该导致其中一个,因此这意味着Android或您的设备中存在错误。
如果您可以创建可靠地重现此崩溃的测试项目,请在http://b.android.com上打开一个问题并附上它,以及上面显示的核心转储跟踪和任何其他有用信息。通常,我会说你应该首先搜索b.android.com,但我不知道跟踪的哪些部分足够独特,以确定你的崩溃是否已经报告过。
答案 1 :(得分:0)
因为当他们需要跳跃时我会在那些活动上使用finish()...
我不是百分百肯定,但是我很确定当你将控制从一个活动传递到另一个活动时,你不应该像这样调用finish()。尝试删除对finish()的调用,看看是否能让它变得更好。这可能不会导致你的错误,但它至少值得一试。