【问题标题】:Android: dalvik killing app due to ANR when in debugger breakpointAndroid:dalvik 在调试器断点时因 ANR 而杀死应用程序
【发布时间】:2019-03-08 19:59:52
【问题描述】:

在 Android 4.3 嵌入式(自定义)设备上,我试图通过在 Service 子类 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'

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

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

【问题讨论】:

    标签: android debugging dalvik


    【解决方案1】:

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

    【讨论】:

    • 谢谢。我有一个定制的 Android 4.3 开发板,其中去除了许多此类 UI 功能。可以在没有 UI 的情况下完成等效操作吗?
    • 你可以使用“adb shell am set-debug-app my.app.package.name”
    猜你喜欢
    • 1970-01-01
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多