【发布时间】:2017-07-12 16:22:16
【问题描述】:
我不知道如何捕捉 Visual Studio 调试器在 C# 代码中评估我的属性值的时刻。断点仅在我的代码访问该属性时才有效,而不是 Visual Studio 调试器(当监视此属性时)。
我的问题是:当 Visual Studio 调试器在 Watch 窗口中显示此属性的值时,Visual Studio 是否具有更改断点行为的设置或功能,以便它们被命中(如果此类断点位于属性的 getter 中) (并为此执行这个 getter)?
我需要这个来解决我的问题(但问题不是我的问题,它只是提供一些背景,为什么我需要我要求的功能): 出于某种原因,调试器以某种方式读取我的对象的某些属性会产生不必要的副作用(导致另一个属性发生变化)。当我在代码中做同样的事情(读取对象的属性)时,不会发生这样的事情。为了找到导致这种效果的属性(因为我有很多属性),我希望在调试器评估导致我的带有这些断点的代码执行的表达式时设置断点。
我在 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;
}
}
【问题讨论】:
-
您能举例说明这种变化是如何发生的吗?
-
我猜你必须提供一个 [mvce] 来解释读取一个属性将如何修改另一个属性。
-
是的,你可以。在您认为失败的地方立即在行/步骤上放置一个断点,以及同一行。检查之前和之后的值。没有代码(尽管有说明),但不可能为您指明正确的方向。
-
@gravity 这家伙不是来听的。他是来告诉你答案是什么,而你正在耗尽他的耐心。他还不知道关于编程的一小部分信息,而你的工作就是提供它,不要废话。
-
"属性...更改值...不会发生在代码流中..." - ?!?我不确定你对不同环境下程序编译期间发生的事情有基本的了解。
标签: c# visual-studio debugging