如何使Mac上的Visual Studio在错误行上中断,而不是在主类中中断?

zmeyuzjn  于 2023-01-09  发布在  Mac
关注(0)|答案(2)|浏览(162)

当我调试我的项目时,我遇到了一个运行时错误,调试器停止在主线上,而不是错误行上。
使用AppKit;

namespace Project {
    static class MainClass {
        static void Main(string[] args) {
            NSApplication.Init();
            NSApplication.Main(args); // breaks here
        }
    }
}

代替错误行:

if (isTrue) {
    button.Title = "Title"; // Object reference not set to an instance of an object
}

有没有办法改变它,使它在有错误的行上中断?


x 1c 2d 1x我尝试了忽略选项:

但是,下次将取消选中该选项:

xlpyo6sf

xlpyo6sf1#

这对我在Visual Studio for Mac中起作用:
1.转到主菜单View -> Debug Windows -> Breakpoints
1.单击New Exception Catchpoint按钮(或单击Breakpoint而不是 * 捕捉点
1.让选项保持原样,即:
a)
断点动作 * = Pause the program
B)* 何时采取行动 * = When an exception is thrown“系统异常”;包括子类= true
1.单击Create按钮进行确认
1.启动项目(主菜单Run -> Start Debugging或点击工具栏中的播放按钮),并享受捕捉错误的乐趣

z18hc3ub

z18hc3ub2#

当然,最简单的方法(如果你知道你在寻找一个特定的错误)是在异常窗口(Debug-〉Windows-〉Exception settings-〉Common Language Exceptions)中启用(检查)相应的异常。由于NRE不是你在运行时所期望的,所以这对这些异常来说是很好的。
如果异常是未处理的并且在主线程上发生,那么您需要的通常是默认行为,如果异常发生在任务或异步方法中,那么事情确实有点糟糕,因为异常首先被 Package 到AggregateException中,然后在等待任务时将其抛出到主线程。
当您遇到不希望的行为时,您在调用堆栈中的位置是否仍然正确?如果异常发生在不同的模块中,您可能还需要禁用“仅我的代码”。

相关问题