如何调试Visual studio 2010中设置的属性

本文关键字:2010 设置 属性 studio Visual 何调试 调试 | 更新日期: 2023-09-27 18:06:31

假设我有这个属性

public ISetting Setting { get; set; }

如何在集合处获得断点?这样程序在设置值时会暂停。

我试着这样做

public IDatabaseConnectionSetting ConnectionSetting { 
    get; 
    set;
}

并将断点放在set;行上,但仍然不起作用。红色断点突出显示整个属性声明

如何调试Visual studio 2010中设置的属性

这里有一个更好的解决方案:不能在auto-property setter上设置断点吗?为什么?

使用Visual Studio 2008,2010, 2012:

  1. 进入断点窗口

  2. New->Break at Function…

  3. 对于get,输入:ClassName.get_CurrentFramesize()

    输入:ClassName.set_CurrentFramesize(int)

你会得到一个"没有可用的来源";当遇到断点时,您将获得调用堆栈中的调用>位置。

我找到了这个解决方案:http://social.msdn.microsoft.com/Forums/en/vsdebug/thread/b1dd0dc3-e9c1-402a-9c79-a5abf7f7286a

参见:调试自动属性

使用full property而不是autoproperty。

快捷方式是propfull

private ISetting setting;
public ISetting Setting 
{ 
    get 
    { 
        return setting; 
    }
    set 
    { 
        setting = value; 
    }
} 

要使用代码段快捷方式,请键入propfull,然后按两次TAB

不行。自动属性的编译方式与后备存储类似。我认为没有理由在它们上允许断点,因为你必须在某个地方分配它们,检查那里的属性。

private bool TestProperty { get; set; }

被编译成

[CompilerGenerated]
private bool <TestProperty>k__BackingField;
[CompilerGenerated]
private void set_TestProperty(bool value)
{
    this.<TestProperty>k__BackingField = value;
}
[CompilerGenerated]
private bool get_TestProperty()
{
    return this.<TestProperty>k__BackingField;
}