Android:在调试器断点时由于 ANR 导致 dalvik 杀死应用程序

Far*_*jmi 3 debugging android dalvik

在 Android 4.3 嵌入式(自定义)设备上,我试图通过在服务子类 onStartCommand 方法中设置断点来调试我的应用程序。当我在断点处暂停时,由于 ANR 没有意识到我正在调试,dalvik 会杀死我的应用程序。

logcat 显示:

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'
Run Code Online (Sandbox Code Playgroud)

请注意,我的应用中有一个ANRWatchDog,它可以正确识别调试会话并忽略 ANR。

有没有办法对 Dalvik 做同样的事情?我假设可以在不因 ANR 而崩溃的情况下调试服务。

Jes*_*eke 8

在开发者设置中,有一个名为“选择调试应用程序”的选项。单击此按钮并选择您要调试的应用程序。这应该可以防止在您调试该应用程序时发生任何 ANR。它还启用了“等待调试器”选项,如果启用,它将在应用程序启动后立即暂停,因此您可以在必要时附加调试器并调试应用程序启动代码。

  • 您可以使用“adb shell am set-debug-app my.app.package.name” (2认同)