gpt4 book ai didi

java - 如何在 Android Studio 中正确设置异常断点?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:37:18 30 4
gpt4 key购买 nike

几个月来我一直在尝试让我的调试器中断我自己的代码,但没有成功。每个未捕获的异常都会在 ZygoteInit.run() 方法中中断。

这是我已采取的行动的列表。

  1. debug { debuggable true } 添加到我的应用模块的 build.gradle 文件中
  2. 手动添加 debuggable="true" 到我的 AndroidManifest.xml 文件
  3. 选中断点窗口中的任何异常复选框
  4. 将相关的类过滤器模式添加到 Any exception 断点
    • 这会导致调试器完全跳过所有未捕获的异常

我一直在通过查看 Logcat 中的堆栈跟踪进行调试,它确实在堆栈跟踪中显示了我的类。

我在稳定和金丝雀 channel 的当前和以前版本中看到过这个版本。

这里有我遗漏的东西吗?

编辑:只是为了向人们澄清,问题是我未选中“捕获异常”框。选中此框解决了我的问题。

这是我的 Gradle 文件的相关部分,如果它有帮助的话。

android {
compileSdkVersion 22
buildToolsVersion '22.0.0'

defaultConfig {
applicationId "com.--redacted--"
minSdkVersion 15
targetSdkVersion 22
versionCode 30
versionName "0.0.30"
multiDexEnabled true
}
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/beans.xml'
}
buildTypes {
debug {
debuggable true
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dexOptions {
javaMaxHeapSize "4g"
}
}

这是我的断点窗口的屏幕截图。

Breakpoints window

最佳答案

还有几件事要确保:

  • 暂停设置为所有
  • 通知:
    • Caught exception 如果要捕获定义了错误处理的异常
    • Uncaught exceptions 如果未处理的异常要被捕获
  • 将类过滤器设置为仅包含您的代码、Android 代码和 Java 代码

在此处查看更详细的说明:https://stackoverflow.com/a/28862538/3063884

Breakpoints dialog

此方法捕获所有引发的异常(当“捕获”和“未捕获”被选中时)。因此引发了所有内部异常。类过滤器的规范通过排除其中一些异常来限制这一点。例如,在上面的屏幕转储中,忽略了在启动期间频繁引发的 ClassNotFoundException

这种方法的一个小缺点是,在应用程序启动期间,可能会出现一条消息,指示“无法找到当前堆栈框架的源类”。这是因为尚未加载所有源代码。这只会在启动期间发生一次,可以安全地忽略。避免这种情况的另一种方法(如果在应用程序启动期间没有预期的异常)是“运行”Run应用程序(而不是启动“调试”),然后通过运行 -> 将调试器附加到 Android 进程 手动将应用程序附加到调试器 ... 或按Attach工具栏中的按钮。

关于java - 如何在 Android Studio 中正确设置异常断点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29138227/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com