在托管语言中数据更改时断开的断点

Jas*_*son 15 c# debugging breakpoints

我有一个列表属性的类,在某些情况下似乎丢失了一个元素.我不知道这发生的时间.

所以我想要做的是设置一个Visual Studio断点,它将在该值发生变化时暂停程序.条件断点在这种情况下不起作用,因为我不知道删除此断点的是什么.

换句话说,我希望我的程序停止myList.Count评估一个新的数字.

关于如何做到这一点的任何想法?

Ric*_*ook 16

由于CLR限制,这在C#或任何其他.NET语言中是不可能的.Visual Studio本机代码调试器支持C++代码的数据断点(链接),这完全符合这一要求,但托管代码不支持此功能.您可以尝试按照此问题的其他答案中的建议对集合进行分解或拦截Add以及Remove方法调用.


Bri*_*eon 9

怎么样换出List<T>ObservableCollection<T>和监听CollectionChanged事件?它实现了IList<T>接口,因此在可用方法中应该有足够的重叠,以产生语法和语义兼容性.


m-s*_*arp 5

这现在可以在 Visual Studio 2019 中实现。请参阅此处的发行说明:https : //docs.microsoft.com/en-us/visualstudio/releases/2019/release-notes

本文使用预览版 2 进行了详细介绍。 https://devblogs.microsoft.com/visualstudio/break-when-value-changes-data-breakpoints-for-net-core-in-visual-studio-2019/

请注意,这仅适用于 .NET Core,而不是即将成为传统的、成熟的、仅适用于 Windows 的 .NET 框架。

  • 有趣,但该功能似乎仅适用于 .NET Core。 (2认同)