Android Studio 调试器应用程序因 InterruptedException 而崩溃
Android Studio Debugger Application Crashes with InterruptedException
今天工作时,好像突然间我无法再调试我们的应用程序了。有趣的是,如果我 运行 该应用程序正常运行,它就可以正常工作。澄清一下,我 运行 整个上午都在调试调试器,没有发生任何事故(除了偶尔出现的故障或崩溃)。然后午餐后它开始 100% 失败。当然,我整天都在进行更改,因此出现了上面的 "it seems"。所以,这里有一些相关的细节:
Android Studio 2.1.1(2016 年 4 月 28 日构建)
此应用启动时会出现登录屏幕。然后,用户必须使用调用外部服务的 username/password 进行身份验证。
我可以进入登录屏幕,但应用程序总是在身份验证过程中的同一点崩溃。
这是堆栈跟踪:
05-24 14:56:25.764 2399-2745/com.mycomp.myapp.test E/Crashlytics: Failed to execute task.
java.lang.InterruptedException
at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:375)
at java.util.concurrent.FutureTask.get(FutureTask.java:162)
at com.crashlytics.android.v.a(SourceFile:1936)
at com.crashlytics.android.v.uncaughtException(SourceFile:307)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
05-24 14:56:25.764 2399-2745/com.mycomp.myapp.test E/AndroidRuntime: FATAL EXCEPTION: pool-5-thread-1
Process: com.mycomp.myapp.test, PID: 2399
java.lang.InterruptedException
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:1991)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2025)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:820)
以下是我尝试修复的问题:
- 取消我的所有更改(git 存储)
- 从 phone
卸载应用程序
- 做一个干净的构建
- 执行 Gradle 项目重新同步
- 移除所有断点(真的吗?)
- 好的,我一直在到处添加断点以查看其工作原理,所以谁知道呢?那里有一些优点。
- 重启Android工作室! (关闭再打开)
到目前为止,没有任何效果。但是,我怎么强调都不为过,如果我只是 运行 应用程序(播放按钮,^R)和 运行 它在同一台设备上,它工作得很好!登录没有问题。所以,这似乎不是代码问题。
此外,如果您查看堆栈跟踪,没有任何内容指向我们的项目。
有什么想法吗?
好吧,我明白了。结果我选择了 "Java Field Watchpoint" 和 "Suspend Thread" 作为选项之一。请参阅随附的屏幕截图以进行说明。要点:
如你所见,我一直在使用一堆断点,所以它被埋在 window 中,我没有看到它。
我还是不知道它是怎么设置的。我前一天一直在使用手表,但我把它们都删除了。此外,我很确定我没有打开它,所以它是如何在一天中神秘地停止工作的仍然是个谜。另外,我当然不会自己检查 "suspend thread" 。某种默认设置?
点仍然存在 - 如果您看到奇怪的堆栈跟踪,最好检查所有断点 和 观察点设置。
我希望这对某人有所帮助。
Instant 运行 似乎是罪魁祸首(至少在我使用 Android Studio 2.3.3 的情况下)。不要禁用断点,而是尝试禁用 Instant 运行。一旦我这样做了,断点就不再导致崩溃了。
有关详细信息,请参阅 。在 Mac OS X 下,我通过转到 Android Studio->Preferences->Build, Execution, Deployment->Instant运行 并取消选中来禁用 Instant 运行 "Enable Instant Run to hot swap ...".
设置面板中显示 "Having trouble with Instant Run?" 消息。我点击了 "Re-enable and activate extra logging",重现了崩溃,然后立即按照他们的要求使用 "Help - Report Instant Run Issue..." 选项进行了报告。
关闭即时 运行,它将解决所有问题
我更换了模拟器(从 Android 8.1 到 Android 7.0)并且没有再遇到这种情况。我为此浪费了 3 个小时。我希望我能通过建议帮助别人。
今天工作时,好像突然间我无法再调试我们的应用程序了。有趣的是,如果我 运行 该应用程序正常运行,它就可以正常工作。澄清一下,我 运行 整个上午都在调试调试器,没有发生任何事故(除了偶尔出现的故障或崩溃)。然后午餐后它开始 100% 失败。当然,我整天都在进行更改,因此出现了上面的 "it seems"。所以,这里有一些相关的细节:
Android Studio 2.1.1(2016 年 4 月 28 日构建)
此应用启动时会出现登录屏幕。然后,用户必须使用调用外部服务的 username/password 进行身份验证。
我可以进入登录屏幕,但应用程序总是在身份验证过程中的同一点崩溃。
这是堆栈跟踪:
05-24 14:56:25.764 2399-2745/com.mycomp.myapp.test E/Crashlytics: Failed to execute task.
java.lang.InterruptedException
at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:375)
at java.util.concurrent.FutureTask.get(FutureTask.java:162)
at com.crashlytics.android.v.a(SourceFile:1936)
at com.crashlytics.android.v.uncaughtException(SourceFile:307)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
05-24 14:56:25.764 2399-2745/com.mycomp.myapp.test E/AndroidRuntime: FATAL EXCEPTION: pool-5-thread-1
Process: com.mycomp.myapp.test, PID: 2399
java.lang.InterruptedException
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:1991)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2025)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:820)
以下是我尝试修复的问题:
- 取消我的所有更改(git 存储)
- 从 phone 卸载应用程序
- 做一个干净的构建
- 执行 Gradle 项目重新同步
- 移除所有断点(真的吗?)
- 好的,我一直在到处添加断点以查看其工作原理,所以谁知道呢?那里有一些优点。
- 重启Android工作室! (关闭再打开)
到目前为止,没有任何效果。但是,我怎么强调都不为过,如果我只是 运行 应用程序(播放按钮,^R)和 运行 它在同一台设备上,它工作得很好!登录没有问题。所以,这似乎不是代码问题。
此外,如果您查看堆栈跟踪,没有任何内容指向我们的项目。
有什么想法吗?
好吧,我明白了。结果我选择了 "Java Field Watchpoint" 和 "Suspend Thread" 作为选项之一。请参阅随附的屏幕截图以进行说明。要点:
如你所见,我一直在使用一堆断点,所以它被埋在 window 中,我没有看到它。
我还是不知道它是怎么设置的。我前一天一直在使用手表,但我把它们都删除了。此外,我很确定我没有打开它,所以它是如何在一天中神秘地停止工作的仍然是个谜。另外,我当然不会自己检查 "suspend thread" 。某种默认设置?
点仍然存在 - 如果您看到奇怪的堆栈跟踪,最好检查所有断点 和 观察点设置。
我希望这对某人有所帮助。
Instant 运行 似乎是罪魁祸首(至少在我使用 Android Studio 2.3.3 的情况下)。不要禁用断点,而是尝试禁用 Instant 运行。一旦我这样做了,断点就不再导致崩溃了。
有关详细信息,请参阅
设置面板中显示 "Having trouble with Instant Run?" 消息。我点击了 "Re-enable and activate extra logging",重现了崩溃,然后立即按照他们的要求使用 "Help - Report Instant Run Issue..." 选项进行了报告。
关闭即时 运行,它将解决所有问题
我更换了模拟器(从 Android 8.1 到 Android 7.0)并且没有再遇到这种情况。我为此浪费了 3 个小时。我希望我能通过建议帮助别人。