特定变化的断点

时间:2015-11-19 20:54:26

标签: .net debugging visual-studio-2015

我在C#程序中寻找一个位置,其中已知对象实例的某个属性会更改其值。它是关于某个集合的Count属性,最终只有2个项目,它应该只有1.我可以看到第一个项目添加到集合的位置,但我不知道第二个来自哪里。该程序处理了许多其他事情,我无法逐步完成每个事情。函数完成后,有趣实例的Count属性返回2.

在我为这些集合添加项目的地方设置断点并没有帮助。我使用的条件再也不会触发。离开这个条件是无法处理的噪音。

我在$1.Count更改时尝试添加函数断点,但只要在该对话框窗口中的任意位置单击,就会再次删除该条件。这似乎是Visual Studio 2015中的一个错误。$1将是我在第一个项目添加到集合时分配的对象ID。我现在想要捕获正在添加的第二个项目。在监视面板中使用$1可以正常工作,实际上就是在函数完成后我可以看到有趣实例的Count值的方式。

有人知道在这样的事件上设置断点的方法吗?

1 个答案:

答案 0 :(得分:0)

我会将该特定集合包装在代理对象中,并在C#中劫持对Add的调用。在那里,您可以检查当前Count并最终致电Debugger.Break();

如果你的集合实现了IList,你可以编写一个自己的实现,并将所有调用转发给内部列表实例。这使得为​​特定情况添加钩子或断点更加容易。