调试自动属性

在自动实现的属性中,是否有办法在 setter/getter 上设置断点?

int Counter { get; set; }

除了将其更改为标准属性(我是这样做的,但是为了做到这一点,我必须更改和重新编译整个项目)

27460 次浏览

在设置属性或获取属性时设置断点,没有其他方法。

你可以通过 查找所有参考文献选项来做到这一点

由于它只是存储值,并且在 setter 部分中没有任何代码,所以要调试什么呢?

如果我是你,我会暂时让属性成为一个标准的,由内部字段支持... 设置你的断点,然后你可以改回来。

使用 Visual Studio 2008,2010,2012,2013:

  1. 转到“断点”窗口
  2. 新-> 功能中断..。
  3. 对于 get,键入: ClassName.get_Counter()

    对于 set,键入: ClassName.set_Counter(int)

当命中断点时,您将获得一个 “没有可用资源”,但是您将在调用堆栈中获得调用位置。

我找到了这个解决方案 这里是 MSDN

这个问题很老了,但是值得注意的是,它只在 VS 2015中起作用。

Https://devblogs.microsoft.com/devops/set-breakpoints-on-auto-implemented-properties-with-visual-studio-2015/

class X {
public string name {
set;
get; // setting a breakpoint here will break in VS 2015!
}
}

关于 Visual Studio 2017:

鼠标悬停在“设置”单词-> 右键单击-> 断点-> 插入断点

以前:

Before

之后:

After