Android应用程序在调试模式下启动时崩溃
当我在调试模式下运行时,应用程序会崩溃,但当我正常运行时,它会工作。 我认为问题发生在附加调试器时 日志:Android应用程序在调试模式下启动时崩溃,android,android-studio,debugging,android-debug,android-debugging,Android,Android Studio,Debugging,Android Debug,Android Debugging,当我在调试模式下运行时,应用程序会崩溃,但当我正常运行时,它会工作。 我认为问题发生在附加调试器时 日志: 对我来说,它发生在嵌套函数中有断点时。在我的例子中,它位于Runnable.run(){}中。不确定它是否发生在其他嵌套函数中 例如: public class TouchEvent { public boolean HandleEvent(MotionEvent Event) { new Runnable() { @Override public void run
对我来说,它发生在嵌套函数中有断点时。在我的例子中,它位于
Runnable.run(){}
中。不确定它是否发生在其他嵌套函数中
例如:
public class TouchEvent {
public boolean HandleEvent(MotionEvent Event) {
new Runnable() { @Override public void run() {
int i=5;
i++;
}};
}
}
如果run()funct中的任何一行上有断点,它将崩溃,并出现错误a/art:art/runtime/jdwp/jdwp_event.cc:661]检查失败:Thread::Current()!=GetDebugThread()(线程::当前()=0x#######,GetDebugThread()=0x##########)预期事件线程
此错误在第一次遇到类时发生,而不是在遇到断点时发生。因此,当我走进一行有newtouchevent()的代码时,我就想到了这一点代码>,在运行任何TouchEvent代码之前(在构造函数之前)
解决方案是删除断点(并将其放在其他位置)
编辑:
忘了提及,它似乎与API25有关,但也有API26和API27的报道
编辑:
另一个解决方案是禁用即时运行,但请注意下面的问题。问题与Android 7.x版有关,我删除了嵌套函数中的所有断点,它工作了,也用Android 6.0版进行了测试,并且工作正常
根据谷歌开发者团队的回应,它已于2016年1月12日修复,并将在下一版本中应用。在我的情况下,我不得不禁用Instant Run。即时运行似乎有各种各样的副作用,这可能是其中之一。从Runable中删除断点。Run()为我解决了这个问题。我能够在运行时在Runable.run()中使用断点。但不是在编译时这真的很奇怪,我禁用了Instant Run,问题自行解决了。遇到了同样的问题,但我的断点是嵌套函数的第一行,所以如何将它移到别处
我创建了一个临时私有方法,并在函数中首先调用该方法,然后在该方法中设置断点
当我完成调试时,我删除了该方法及其调用。我的问题是,我在import语句中有一个断点我删除了所有断点,并使用Emulator Pixel API 25进行了测试
要删除所有断点,请执行以下操作:
- 转到调试器选项
- 单击下面的红色图标停止调试
- 您将看到一个窗口,您可以删除所有断点
请参阅本文中的更多内容:这是一个很长的过程,但对我来说,当我有一个import语句没有被使用,并且该import有运行网络调用的代码时,它对我来说崩溃了,但当删除它时,代码能够正常调试 仅在使用调试器启动时启动崩溃。重新启动Android Studio 2.3.2…不断崩溃。在运行模式下运行良好。我在onCreate之后立即输入了Log.d(),它解决了问题!算了吧 这是由于调试点存在一些问题。删除所有调试点,然后它就可以工作了 最简单的解决方案是尝试找到另一个设备或模拟器(感谢AVD管理器,我们有一个选择),该设备或模拟器将在没有解决办法的情况下发挥魅力
在窗口5:调试中,使用“查看断点”按钮
全部取消选择
删除我的应用程序上的所有调试点工作正常
您可以使用ctrl+shift+f6删除所有调试点我的应用程序也只有在调试模式下才会崩溃。至于3.5版本,“即时运行”被替换为“应用更改”,所以我无法禁用它。我的解决方案是正常启动应用程序(使用绿色箭头),在应用程序崩溃后导航,然后将调试器连接到应用程序:
我不知道发生了什么事,但现在就去做吧。魔术我遇到了同样的问题,完全是废话。即使重新启动模拟器也无济于事。在删除了一堆代码,然后一次一块地阅读之后,我回到了原始代码,问题就解决了。我觉得类对象只需要重建。编译出错了。我猜一个“干净”的项目可能会修复它。差不多3年后,这个错误仍然存在。这已经在code.google.com上报道过了,我正在努力修复它。我有sdk 23和构建工具25.0.1-同样的问题。删除断点可以解决此问题。您也可以删除断点,按Debug,然后在应用程序运行确定后,将其重新添加到所需的位置。工作正常,然后,只记得删除它,然后再重新启动。我切换模拟器和问题消失-切换回原来的模拟器和问题回来。一旦问题出现,克服它的唯一方法(除了清除所有断点-不,谢谢)是禁用Instant Run。在问题模拟器上重新启用Instant Run会使问题再次出现。问题是7.1.1上的其他线程中的断点与Instant Run on的断点混合。请注意,在Android Studio中,文件->设置->构建、执行、部署->即时运行。这也是我的情况!谢谢:这是我一生中再也见不到的一个小时在多台机器上工作,随着谷歌不断地重新应用instant run,我需要它使我的效率提高大约4216%,当它最终工作时,我几乎可以远程找回失去的时间。非常感谢。应勾选为答案;)这个丑陋的功能给了你5美分,浪费了你100美元:))尽了一切可能,上面的评论有帮助!谢谢!它奏效了,这应该是可以接受的答案。谢谢此外,您还可以将Instant Run作为另一个解决方案删除。如果附加一个链接以支持此解决方案,那就太好了;)“手风琴
public class TouchEvent {
public boolean HandleEvent(MotionEvent Event) {
new Runnable() { @Override public void run() {
int i=5;
i++;
}};
}
}