Android Studio调试器应用程序因InterruptedException崩溃

Mic*_*ski 23 debugging android crashlytics android-studio-2.1

在今天工作的时候,似乎突然间我再也无法调试我们的应用程序了.有趣的是,如果我正常运行应用程序它会工作得很好.为了澄清,我整个上午都在运行调试器而没有发生任何事故(除了偶尔的故障或崩溃).然后在午餐后它开始失败100%的时间.当然,我一整天都在做出改变,因此"似乎"在上面.所以,这里有一些相关的细节:

  • Android Studio 2.1.1(2016年4月28日版)

  • 这个应用程序启动登录屏幕.然后,用户必须使用调用外部服务的用户名/密码进行身份验证.

  • 我可以进入登录屏幕,但应用程序将始终在身份验证过程中的同一点崩溃.

这是堆栈跟踪:

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

以下是我试图解决的问题:

  • 退出我的所有更改(git stash)
  • 从手机上卸载应用程序
  • 做一个干净的构建
  • 做Gradle项目重新同步
  • 删除所有断点(严重吗?)
    • 好吧,我一直在添加断点,看看事情是如何运作的,谁知道呢?那里有一些优点.
  • 重启Android Studio!(关闭再打开)

到目前为止,没有任何作用.但是,我不能强调,如果我只是运行应用程序(播放按钮,^ R)并在同一设备上运行它,它工作得很好!登录没有问题.所以,它似乎不是一个代码问题.

此外,如果你查看堆栈跟踪,没有任何指向我们的项目.

有任何想法吗?

Mic*_*ski 39

好吧,我明白了.事实证明,我选择了"Suspend Thread"作为选项之一的"Java Field Watchpoint".请参阅随附的屏幕截图以获取说明.小贴士:

正如你所看到的,我一直在使用一堆断点,所以它被埋在窗口里,我没有看到它.

我还是不知道它是如何设定的.我前一天一直在使用手表,但我已将它们全部删除了.此外,我很确定我没有打开它,所以它如何在一天中间神秘地停止工作仍然是一个谜.另外,我当然不会自己检查"暂停线程".某种默认设置?

点仍然存在 - 如果您看到奇怪的堆栈跟踪,最好检查所有断点观察点设置.

我希望这可以帮助别人.

Android Studio中BreakPoint Window的屏幕截图

  • 我有类似的问题!除了我不使用观察点 - 只是断点.一切都工作,突然开始在我的应用程序中的启动画面崩溃(我只有Thread.sleep(3000)).在我在片段上添加一个断点后它开始崩溃,它甚至没有在崩溃时达到,但是当我删除了这个断点时它又开始工作了. (6认同)

slo*_*621 24

即时运行似乎是罪魁祸首(至少在我的情况下使用Android Studio 2.3.3).请尝试禁用"即时运行",而不是禁用断点.一旦我这样做,断点不再导致崩溃.

有关详细信息,请参阅在调试模式下启动时的Android应用程序崩溃 在Mac OS X下,我通过转到Android Studio-> Preferences-> Build,Execution,Deployment-> InstantRun并取消选中"Enable Instant Run to hot swap ..."来禁用Instant Run.

有一个"运行时出现问题?" 消息显示在设置面板中.我点击"重新启用并激活额外的日志记录",重现崩溃,然后立即报告使用"帮助 - 报告即时运行问题..."选项.

  • 在Mac上的Android Studio 3.0中仍然存在此问题. (2认同)