gpt4 book ai didi

android - 如何在 Android 中调试 "deep"崩溃?

转载 作者:太空宇宙 更新时间:2023-11-03 13:37:56 25 4
gpt4 key购买 nike

我一直在尝试调试在没有 Java 堆栈跟踪的情况下发生的 android 崩溃...Java 堆栈跟踪错误对我来说很容易修复...但我遇到的这个错误似乎在内部崩溃“NDK”或 Android 的深层内部结构被称为...顺便说一句,我没有对 NDK 进行任何修改...我只是不知道还有什么可以称呼该层,呵呵。

无论如何,我主要是在寻找有关深度调试方法的建议,而不是帮助解决这个特定问题...因为我怀疑我是否可以发布所有涉及的源代码...所以我真的只需要知道如何在深层设置断点或任何其他方法来追踪深度崩溃的源头……所以我将简要描述错误,然后发布 LogCat。

我有一个包含 7 个 Activity 的应用

Activity_INTRO
Activity_EULA
Activity_MAIN
Activity_Contact
Activity_News
Activity_Library
Activity_More

INTRO 是发起者...它会在某些公司 Logo 中淡出...显示它们一段时间后会跳转到 EULA Activity ...在用户接受 EULA 后,它会跳转到 MAIN... MAIN 然后创建一个 TabHost 并用剩下的 4 个 Activity 填充它

现在是问题...当我点击 TabHost 的“更多”选项卡时,应用程序暂停几秒钟然后硬崩溃...没有 Java 堆栈跟踪,但有一个实际的 ASM 级别跟踪寄存器、IP 和堆栈……无论我选择哪个选项卡,联系人、新闻、图书馆等等,都会发生同样的事情……所有这些都因同样的硬崩溃而崩溃

但是,如果我将 list 设置为在 Activity_MAIN 启动应用程序,绕过 INTRO 和 EULA,那么这些崩溃就不会发生......所以那些以某种方式处理 TabHost'ed Activities 的开放 Activity 中有些东西挥之不去.. .我想知道这到底是什么......因为当他们需要跳跃时我在这些 Activity 上使用 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

最佳答案

该崩溃似乎是由 Android 固件引起的。 SDK 开发人员不可能导致其中之一,因此这意味着 Android 或您的设备中存在错误。

如果您可以创建一个可靠地重现此崩溃的测试项目,请在 http://b.android.com 上提出问题并将它连同上面显示的核心转储跟踪和任何其他有用信息一起附加。通常,我会说你应该先搜索 b.android.com,但我不知道跟踪的哪些部分足够独特,无法确定你的崩溃之前是否已被报告过。

关于android - 如何在 Android 中调试 "deep"崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4569671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com