如何标记变量/数据结构以检查在Visual Studio中谁更改了它

时间:2016-03-13 09:29:39

标签: c# visual-studio

试图在我的代码中找到一个讨厌的问题(Unity项目)。

基本上我创建一个列表;包含10个带自定义类的元素。我后来使用这个列表,但是当我尝试访问它时,所有10个元素都变为空。

我做错了,很明显,但是我无法追踪列表元素设置为null的位置;所以我想知道Visual Studio是否有办法标记变量,并且可以让我在连接到Unity时运行调试,所以当触摸该列表时,它实际上会像断点一样停止执行,所以我实际上可以看到什么确实调用了将元素设置为null的代码。

这可能吗?还是我必须遵循我的代码片段?

3 个答案:

答案 0 :(得分:1)

好的,我确实找到了解决办法。

在视觉工作室中,在底部还有一个面板,显示"错误列表","输出"和"找到符号"。如果我在代码中的某处放置一个断点,那个区域就会改变,区域标签会在" Autos"," Locals"," Threads",&#34中更改;模块"和" Watch1"。

最后一个选项卡允许您在其中键入一个对象,然后在调试器打开时对其进行监视。我确实添加了包含设置为null的列表的对象,并且我能够跟踪该对象中的更改(尽管只有当您单步执行代码时才会发生这种情况,因此只有当您单步执行代码时才会执行此操作Unity中的脚本。

感谢大家的帮助

答案 1 :(得分:0)

您可以尝试使用code contracts并在元素计数上放置一个不变量,并为每个元素包含非null条件。 代码契约引擎将重新编写代码,并将适当的验证放入修改状态的每个位置,这可能会破坏不变量。 因此,希望您的元素一旦变为空就会出现错误,这样您就可以看到完全何时发生,也许这将有助于您解决问题。

答案 2 :(得分:0)

使用"查找所有参考文献"用于查找所选变量/方法正在使用的所有位置。

使用此功能,您可以设置条件断点,仅当变量为空时才会断开。