Android应用程序仅在Eclipsedebugging期间与SIGABRT Signal 6崩溃
我有一个应用程序,没有附加debugging器的设备上运行得很好。 但是,在Eclipse中debugging时遇到问题:
当主线程暂停大约10秒或更长时间(例如,在遇到断点后),主线程会抛出一个SIGABRT,显然来自libc。
我能想到的唯一解释是主线程上的消息队列在不被轮询时会溢出来自另一个线程的消息。 但是,当主线程暂停时,我看不到堆的增长。 而且,虽然我的应用在所有服务,内容提供者,广播接收者,http和地图工作者线程等之间有大约20个线程,但是我不能真正想到任何过多的消息来源。
所以我的问题是:如何解决这个问题? 我可以使用哪些工具,以及如何查找导致我的应用在debugging器中暂停时崩溃的原因?
编辑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线程被挂起。 问题不在我的应用程序。 所以现在我的问题是:如何在debugging时阻止Android杀死我的进程?
android故意杀死进程,因为它认为UI线程是挂起的,所以它是一个ANR的权利。 为了debugging的目的,你可以,
转到设置 – >开发人员选项,并选中显示所有ANR。
这将显示在后台运行应用程序的App Not Responding对话框。 您可以单击对话框中的“等待”button,以防止系统在debugging器连接之前终止进程。 请注意,对于在前台运行的应用程序,该对话框会自动打开。 对于后台应用程序,您必须启用此选项
这开始发生在我在Android 7.1.1
当附加debugging器时,我的应用程序总是崩溃,在debugging模式下启动应用程序时也是如此。
对我来说固定的是简单的:
- 运行你的应用程序
- 点击debugging中的“静音断点”
- 连接debugging器
- 重新点击“静音断点”取消静音
- 完成后,再次debugging
我有类似的问题,但山姆build议没有帮助 – 我不得不实际删除断点,然后它为我工作。