我不知道如何捕捉Visual Studio调试器在C#代码中计算我的属性值的时刻。只有当我的代码访问该属性时,断点才起作用,而Visual Studio调试器不起作用(当此属性被监视时)。
我的问题是:Visual Studio是否具有更改断点行为的设置或功能,以便当Visual Studio调试器在“监视”窗口中显示此属性的值(并以某种方式为此执行此getter)时,断点变为命中(如果此类断点位于属性的getter中)?
我需要这个来解决我的问题(但这个问题不是我的问题,它只是提供一些背景,为什么我需要我所要求的功能):由于某些原因,调试器阅读对象的某些属性会产生不希望的副作用(导致另一个属性改变)。2当我在代码中做同样的事情(读取对象的属性)时,没有发生类似的事情。3要找到哪个属性(因为我有很多这样的属性)会导致这种效果,我希望在调试器对表达式求值时命中断点,从而使带有这些断点代码得以执行
我在Visual Studio中找不到任何可启用此功能的功能。我是否遗漏了什么?或者,可能是后来添加的?我现在使用的是Visual Studio 2008。
编辑:我得到了反对票,所以我需要再次澄清它。我不是在寻求帮助来发现我的代码中的问题(这就是为什么这里没有代码)。我是在要求一个非常具体的事情。我可以让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;
}
}
4条答案
按热度按时间fgw7neuy1#
无法在调试器属性计算期间启用断点。如果计算的副作用导致调试问题,则可以关闭属性计算和其他隐式调用(如调试器对
ToString()
的调用)在Debug-〉Options-〉General-〉Enable property evaluation and other implicit function call(调试-〉选项-〉常规-〉启用属性求值和其他隐式函数调用)下禁用它。
smdncfj32#
您可以在VS中设置条件断点。将断点设置在所需的行上,右键单击并点击条件。
此链接可以帮助您解决断点条件:https://blogs.msdn.microsoft.com/zainnab/2010/05/03/set-a-simple-breakpoint-condition/
q5iwbnjs3#
就像分享我们如何在VS IDE中使用断点的文档:
https://msdn.microsoft.com/en-us/library/5557y8b4(v=vs.110).aspx
我的理解是数据断点可以实现你想要得到的功能,但是这个功能现在确实有局限性,它现在只支持VC++原生。
因此,我同意Brian Reynolds的观点,解决方法是您可以尝试从调试监视窗口中断或拦截Add和Remove。
当然,对于数据断点问题,其他社区成员也在这里向产品团队提交了这个功能问题:
https://visualstudio.uservoice.com/forums/121579-visual-studio-ide/suggestions/6097301-support-data-breakpoints-for-c
如果您对VS产品有任何好的建议,您也可以投票或提交您的功能请求。
hpxqektj4#
右键单击断点(例如在for循环中),然后单击条件,然后键入条件(例如i〉5或i==5),然后单击关闭按钮。