枚举创建时的断点

本文关键字:断点 创建 枚举 | 更新日期: 2023-09-27 18:04:19

我有一个enum,我试图找出什么代码实际上是创建它的实例。我有很多代码,而且我相当确定我正在寻找的代码是在我当前解决方案中没有的许多模糊项目中的一个,因此查找用法将不起作用。

我知道枚举上没有构造函数这样的东西,但我真的想要一种方法来中断执行,并在任何代码创建和使用该枚举时检查调用堆栈。我曾尝试在单个枚举值上设置断点,但它们从未切换,即使我知道它们正在被使用。

这是可能的吗?还是我需要走另一条路来找到我要找的东西?

枚举创建时的断点

嗯,这在技术上是可能的,假设您控制了枚举本身的代码:

  1. 将YourEnum重命名为YourEnumInternal
  2. 创建类YourEnum,并为YourEnumInternal中的每个值设置一个属性,具有相同的名称,并返回YourEnumInternal的各自成员。
  3. 在每个属性中设置断点。

另外,如果你真正想做的是查看调用堆栈当这个枚举的成员被添加到一个特定的集合(如你在评论中所说),为什么不找到集合上的用法(希望有一个较小的范围?),并把断点(或更好的是,TracePoints与$CALLSTACK伪变量),无论项目被添加到它?

您可以使用Find All References,然后您可以在适当的位置设置断点

你可以使用VS中的对象浏览器来搜索你的enum。它包括被引用的程序集(但不是作为项目的解决方案的一部分)。