Debugging Android Studio IDE:异常中断

Debugging Android Studio IDE:异常中断,debugging,exception,android-studio,breakpoints,Debugging,Exception,Android Studio,Breakpoints,我的Android Studio似乎不想在默认情况下破坏任何异常。在“任何异常”上启用中断将在实际JDE库中开始中断。有没有办法强制它只在我的代码中出现异常时才中断 来自Visual Studio universe,在此处查找默认VS调试行为。如果打开“断点”窗口,它会为您提供许多选项,使其有条件地中断或不中断。您要查找的是这里的“类过滤器”——您可以指定一个通配符表达式,例如,一个Java包路径,它只会在匹配类生成的异常中中断。要中断所有异常,无论捕获还是未捕获: 通过运行查看断点打开断点窗口

我的Android Studio似乎不想在默认情况下破坏任何异常。在“任何异常”上启用中断将在实际JDE库中开始中断。有没有办法强制它只在我的代码中出现异常时才中断


来自Visual Studio universe,在此处查找默认VS调试行为。

如果打开“断点”窗口,它会为您提供许多选项,使其有条件地中断或不中断。您要查找的是这里的“类过滤器”——您可以指定一个通配符表达式,例如,一个Java包路径,它只会在匹配类生成的异常中中断。

要中断所有异常,无论捕获还是未捕获:

  • 通过运行查看断点打开断点窗口
  • 此时将显示“断点”对话框。在左窗格中,滚动至底部。在Java异常断点下选择任何异常
  • 在选择任何异常的情况下,在右侧窗格上,按如下方式配置:
    • 暂停:已选中
    • 全部:已选定
    • 条件:
      !(此实例为java.lang.ClassNotFoundException)
    • 通知:选择了捕获的异常和未捕获的异常
  • 定义指定调试器应打开的库的命名空间的筛选器:选中类筛选器复选框以启用类筛选()。然后单击(省略号)按钮打开“类过滤器”对话框。通过单击(添加模式)按钮指定类命名空间模式。输入:
    • com.myapp.*
      (将其替换为应用程序的名称空间前缀)
    • java.*
      (注意:根据OP的问题,请不要打断java库)
    • android.*
      (如上所述,只调试自己的应用程序代码)
    • 根据需要添加任何其他名称空间(例如,第三方库)
  • 按确定,然后关闭断点对话框

  • 要中断代码中的所有异常以及未捕获的其他异常:

    这个方法过滤掉运行时在正常操作期间抛出的异常类型(不是非常异常,是吗?)。它不使用类过滤器,因为它会过滤掉太多;代码中的错误通常会导致运行时类抛出异常(例如,访问超过末尾的数组列表)

  • 仅为未捕获的异常启用Java异常断点/任何异常

  • 为捕获和未捕获的异常为
    异常(Java.lang)
    类添加一个新的Java异常断点。启用条件并将其设置为:

        !(this instanceof java.lang.ClassNotFoundException || this instanceof android.system.ErrnoException || this instanceof java.io.FileNotFoundException || this instanceof javax.net.ssl.SSLHandshakeException || this instanceof javax.net.ssl.SSLPeerUnverifiedException || this instanceof android.system.GaiException || this instanceof java.net.SocketTimeoutException || this instanceof java.net.SocketException || this instanceof java.security.NoSuchAlgorithmException)
    

  • 将遇到的任何其他非例外情况添加到条件中的排除列表中。(顺便说一句,使用
    java.lang.Exception
    是一种有效获取第二个“任何异常”条目的方法。)

    对于任何查找“断点”窗口的人,可以在菜单中找到它,运行->查看断点。我正在尝试此操作,但无法使其工作。类过滤器应该是什么?可以举一些例子吗?我也有同感——类过滤器似乎对我不起作用。我试过com.mycompany.*但是没有一个异常会导致它崩溃。它每次都会在ZygoteInit.java中停止!真没用!如何克服这个问题???运行->查看断点。。。。是的,我们不想在“视图”菜单下显示窗口,是吗@AndroidDev它不是最好的界面,尤其是在使用VisualStudioIDE时。类过滤器用于防止各种低级错误更频繁地停止应用程序(尤其是在应用程序初始化期间)。例如,按照上面的步骤操作,但不使用类过滤器,然后在调试模式下启动应用程序,看看会发生什么。@AndroidDev:我认为这实际上是有意义的。默认情况下,它在所有异常情况下都会中断。您不必设置条件和过滤器。然而,OP确实特别要求过滤异常(他自己代码中的异常)。作为xcode/iOS开发人员和android-n00b,我不知道为了触发任何断点,在android studio中,你不能单击类似于播放(三角形)的图标来启动应用程序。您必须通过单击右侧应用程序旁边的类似bug的图标来启动应用程序。@xaphod另一种方法是在释放模式下运行(按“播放”按钮),然后一旦应用程序启动,连接调试器(通过按带有图标右下角绿色bug的bug肖像矩形的设备),然后选择要调试的进程。如果不调试任何应用程序启动代码,速度会快得多。请参阅:如果您正在使用junit(在单元测试时进行调试),您可能希望添加类过滤器
    org.junit.*
    不适合使用!(a | | b | | c)而不是!(a) &&!(b) &&!(c)