gpt4 book ai didi

Android 应用程序仅在 Eclipse 调试时因 SIGABRT Signal 6 而崩溃

转载 作者:IT王子 更新时间:2023-10-28 23:49:08 25 4
gpt4 key购买 nike

我有一个应用程序可以在没有附加调试器的设备上完美运行。但是,我在 Eclipse 中调试时遇到了问题:

当主线程挂起大约 10 秒或更长时间(例如遇到断点后),主线程抛出一个 SIGABRT,显然来自 libc。

我能想到的唯一解释是,主线程上的消息队列在未被轮询时会溢出来自另一个线程的消息。但是,当主线程挂起时,我没有看到堆增长。此外,虽然我的应用在所有服务、内容提供者、广播接收器、http 和 map 工作线程等之间有大约 20 个线程,但我真的想不出任何过多消息的来源。

所以我的问题是:我该如何解决这个问题?我可以使用哪些工具以及如何查找导致我的应用在调试器中挂起时崩溃的原因?

编辑 1:

logcat中唯一的就是:

02-05 22:23:54.861: I/dalvikvm(26795): threadid=3: reacting to signal 3
02-05 22:23:54.901: D/dalvikvm(26795): threadid=1: still suspended after undo (sc=1 dc=1)
02-05 22:23:54.901: I/dalvikvm(26795): Wrote stack traces to '/data/anr/traces.txt'
02-05 22:23:58.905: A/libc(26795): Fatal signal 6 (SIGABRT) at 0x000002f5 (code=0), thread 26795 (om.myapp)

编辑 2:

进一步的调查使我相信这是 android 故意杀死我的进程,因为它错误地认为 UI 线程已挂起。问题不在我的应用程序中。所以现在我的问题是:如何阻止 Android 在调试时杀死我的进程?

最佳答案

android 故意终止该进程,因为它认为 UI 线程已挂起,因此它是 ANR 正确的。出于调试目的,您可以,

转到设置 -> 开发人员选项并选中显示所有 ANR。

这将为在后台运行的应用显示“应用无响应”对话框。您可以单击对话框中的等待按钮,以防止系统在调试器附加之前终止您的进程。请注意,对于在前台运行的应用程序,该对话框会自动打开。对于后台应用,您必须启用此选项

关于Android 应用程序仅在 Eclipse 调试时因 SIGABRT Signal 6 而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21595778/

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