【问题标题】:Breakpoint on a specific change特定更改的断点
【发布时间】:2015-11-19 20:54:25
【问题描述】:

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

在我向此类集合中添加项目的地方设置断点并没有帮助。我使用的条件永远不会再次触发。将这种情况置之不理,实在是太吵了。

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

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

【问题讨论】:

    标签: .net debugging visual-studio-2015


    【解决方案1】:

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

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

    【讨论】:

    • 工作量很大。此外,该集合在复杂库中的任何地方都可以使用,我不确定我是否会做对。我更喜欢直接调试功能而不是重写我的代码。
    猜你喜欢
    • 2016-09-19
    • 1970-01-01
    • 2021-08-29
    • 2021-12-02
    • 2012-07-22
    • 2020-07-21
    • 2018-05-24
    相关资源
    最近更新 更多