问题描述
|
在调试C#时,我经常想知道变量的值何时更改,然后调查程序的状态。
目前,我这样做是这样的:
监视列出有问题的变量。
实际发送垃圾邮件F10(“跳过”的快捷方式),直到看到值更改为止。
但是,所需的F10数量很烦人。
我想这肯定是自动化的。但是我在Microsoft Visual C#Express中找不到此功能,这让我感到惊讶。毕竟,监视列表会自动以亮红色突出显示已更改的值。
我想念什么吗?
解决方法
Express版的简单技巧:
private string myValue;
public string MyValue
{
set
{
if (this.myValue != value) Debugger.Break();
this.myValue = value;
}
}
, 条件断点是您要执行的操作,但似乎在Visual Studio Express中不可用。
在Visual Studio(非Express)中,其工作方式是创建一个条件断点,该断点的表达式等于您的监视值,并以“已更改”作为断点条件。
, 这是我在Visual Studio中执行的方法。通过按F9或单击最左边的空白来设置断点。然后右键单击出现的红点,然后选择“条件”命令。还有其他选择。
但是,Visual Studio Express中可能不支持此功能。
, 您可以使用条件断点
看到这个
, 您可以编写一个if语句来检查更改,并在该if语句中产生一个断点,因此它最初会中断,然后单击resume,它会一直持续到到达此断点为止。
, 根据某些运行时条件使用Debugger.Break,或右键单击某个断点,然后选择条件断点->已更改
编辑:不知道这在快递
,
将断点设置在您希望代码暂停的位置
打开“断点”窗口(调试-> Windows->断点)
右键单击断点,然后选择“条件...”。
将条件设置为变量名称,然后选择“已更改”单选按钮。
单击确定,然后按照常规进行调试:)
, 如果要在某个断点处捕获变量更改,而不是准确捕获更改位置,则设置断点,右键单击该断点,然后选择\“ Condition \”。假设您的变量名是X,当前值是A。在条件字段中输入\“ X!= A \”。
现在,仅当X更改为A以外的其他值时,才会命中断点。