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

时间:2015-03-19 06:10:38

标签: java android android-studio

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

以下是我采取的行动清单。

  1. debug { debuggable true }添加到我的应用模块的build.gradle文件
  2. 手动将debuggable="true"添加到我的AndroidManifest.xml文件
  3. 选中Breakpoints窗口中的Any exception复选框
  4. Any exception断点处添加了相关的类过滤器模式
    • 这会导致调试器完全跳过所有未捕获的异常
  5. 我一直在调试Logcat中的堆栈跟踪,它在堆栈跟踪中显示我的类。

    我在当前和版本中看过这个版本以前建立在稳定和金丝雀频道。

    这里有什么东西我不见了吗?

    编辑:只是为了澄清人们,问题是我没有选中“抓住异常”框。选中此框可以解决我的问题。

    以下是我的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

2 个答案:

答案 0 :(得分:10)

还有几件事需要确保:

  • 暂停设置为全部
  • 通知:
      如果要捕获定义了错误处理的异常,则
    • 捕获异常
    • 未捕获的异常如果要捕获未处理的异常
  • 将类过滤器设置为限制以仅包含您的代码,Android代码和Java代码

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

Breakpoints dialog

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

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

答案 1 :(得分:1)

您需要将调试程序附加到正在运行的进程

您不必总是重新启动应用程序进行调试 要调试您已在运行的应用程序:

  1. 点击将调试程序附加到Android进程
  2. 在“选择流程”窗口中,选择要将调试程序附加到
  3. 的设备和应用程序
  4. 要打开“调试”工具窗口,请单击“调试”

    To view and configure the breakpoints settings, click View Breakpoints on the left side of the Debug tool window. The Breakpoints window appears, and there you could configure them.

  5. 有三种主要类型的例外:

    1. 检查过的execptions:必须由代码处理。 这些代表可以避免的特殊情况 处理和恢复。

    2. 运行时异常:无需处理 码。这些代表意想不到的异常情 可以处理但不一定从中恢复。

    3. 错误:代码无需处理。这些 代表严重意外的特殊情况 不要试图处理。