有没有办法将监视放在变量上,只有在该值发生变化时Visual Studio才会中断?
这样可以更容易地找到棘手的状态问题.
可以这样做吗?
断点条件仍然需要设置断点,我宁愿设置一个监视器,让Visual Studio在状态更改时设置断点.
在Visual Studio 2005菜单中:
调试 - > 新断点 - > 新数据断点
输入:
&myVariable
您还可以选择在代码中明确断开:
// Assuming C# if (condition) { System.Diagnostics.Debugger.Break(); }
来自MSDN:
Debugger.Break:如果未附加调试器,则会询问用户是否要附加调试器.如果是,则启动调试器.如果附加了调试器,则使用用户断点事件发出调试器信号,并且调试器暂停执行该进程,就像调试器断点已被命中一样.
不过,这只是一个后悔.如其他注释中所述,在Visual Studio中设置条件断点是更好的选择.
真的很老的帖子,但万一有人不知道......
在Visual Studio 2015中,您可以在set
自动实现的属性的访问器上放置断点,并且在更新属性时调试器将中断
public bool IsUpdated { get; set; //set breakpoint on this line }
更新
另外; @AbdulRaufMujahid在评论中指出,如果自动实现的属性在一行上,你可以将光标定位在get;
or set;
和hit上,F9
并相应地放置一个断点.太好了!
public bool IsUpdated { get; set; }
想象一下,你有一个名为A的类,声明如下.
class A { public: A(); private: int m_value; };
当某人修改"m_value"的值时,您希望程序停止.
转到类定义并在A的构造函数中放置一个断点.
A::A() { ... // set breakpoint here }
一旦我们停止了该计划:
调试 - >新断点 - >新数据断点...
地址:&(this-> m_value)
字节数:4(因为int有4个字节)
现在,我们可以恢复该计划.更改值时,调试器将停止.
您可以对继承的类或复合类执行相同的操作.
class B { private: A m_a; };
地址:&(this-> m_a.m_value)
如果您不知道要检查的变量的字节数,可以使用sizeof运算符.
例如:
// to know the size of the word processor, // if you want to inspect a pointer. int wordTam = sizeof (void* );
如果查看"调用堆栈",您可以看到更改变量值的函数.
将变量更改为属性并在set方法中添加断点.例:
private bool m_Var = false; protected bool var { get { return m_var; } set { m_var = value; } }