在Android 4.3嵌入式(自定义)设备上,我试图通过在Service子类onStartCommand方法中设置断点来调试我的应用程序。当我在断点处暂停时,由于ANR没有意识到我正在调试,dalvik杀死了我的应用程序。
日志显示:
W/ANRWatchdog: An ANR was detected but ignored because the debugger is connected (you can prevent this with setIgnoreDebugger(true))
I/dalvikvm: threadid=3: reacting to signal 3
D/dalvikvm: threadid=1: still suspended after undo (sc=1 dc=1)
I/dalvikvm: Wrote stack traces to '/data/anr/traces.txt'
Disconnected from the target VM, address: 'localhost:8600', transport: 'socket'
请注意,我的应用程序中有一个ANRWatchDog,可以正确识别调试会话并忽略ANR。
您是用Dalvik做同样的事情吗?我假设可以调试服务而不会由于ANR而崩溃。
答案 0 :(得分:3)
在开发人员设置中,有一个名为“选择调试应用程序”的选项。单击此按钮,然后选择要调试的应用程序。这可以防止在调试应用程序时对该应用程序发生任何ANR。它还启用了“等待调试器”选项,如果启用该选项,它将在应用程序启动后立即将其暂停,因此您可以附加调试器并在必要时调试应用程序的启动代码。