我无法弄清楚如何捕捉Visual Studio调试器在C#代码中评估我的属性值的时刻。断点仅在我的代码访问属性时有效,而不是Visual Studio调试器(当此属性被监视时)。当Visual Studio调试器正在评估该值时,可以让我的C#代码停止在断点处吗?
我的问题是:Visual Studio是否有一个设置或功能,当Visual Studio调试器在Watch中显示此属性的值时,它会更改断点的行为以便它们变为命中状态(如果此类断点位于属性的getter中)窗口(并以某种方式执行此getter)?
我需要这个解决我的问题(但问题不是我的问题,它只是为了提供一些背景为什么我需要我要求的功能): 出于某种原因,不知何故阅读我的一些属性调试器产生不需要的副作用(导致另一个属性发生变化)。当我在代码中执行相同的操作(读取对象的属性)时,就不会发生这种情况。要找到哪个属性(因为我有许多这样的属性)会导致这种效果,所以我希望当调试器评估导致我的代码执行这些断点的表达式时使得断点处于打状态。
我找不到任何功能,在Visual Studio中启用这个功能。我错过了什么吗?或者,也许,它后来被添加了?我现在在Visual Studio 2008上。
编辑:我downvotes,所以我需要再次澄清。我不寻求帮助,在我的代码中找到问题(这就是为什么没有代码在这里)。我要求一个非常具体的事情。由于在调试器中对某些表达式进行评估,可以使Visual Studio在发生执行时停止在断点上。只是。
public int MyProp1
{
get
{
DoSomething1(); // I want VS debugger stop here on evaluating expression in Watch window
return _value1;
}
}
...
public int MyProp99
{
get
{
DoSomething99(); // I want VS debugger stop here on evaluating expression in Watch window
return _value99;
}
}
你能提供的这个变化发生的例子吗? – Sal
我想你必须提供[mvce]来解释读取一个属性将如何修改另一个属性。 – Filburt
你的任何获得者都有副作用吗?你是否试图通过逐一观察房屋而不是一次性来缩小房屋面积?你能准确地详细描述你正在观察的内容吗? –