在Visual Studio中监视某些对象?

时间:2012-10-19 18:34:05

标签: c# visual-studio debugging

我知道我们有Watch监视调试模式中的变量,您可以更改,删除或分配给另一个对象的变量。

但我的意思是监视内存中的一个对象状态。

假设我有一个接收对象并分配到变量

的方法

即:

void DoSomething(object anObject){
   object tempObject = anObject;
}

此方法将被调用超过1次。

如果我在此tempObject上使用Watch,则Watch中的tempObject将在新分配的对象值时继续更改。

我感兴趣的是,只需要观察这个anObject。说到第2次调用这个方法,我发现这个anObject有centain参数不正确,我想跟踪这个对象,看看这个不正确的参数什么时候会改回正确的参数。 (甚至超出范围)。

我该怎么做?或者是否可以在Visual Studio中执行此操作?

因为现在我遇到了类似的问题,我有一个cmain对象,我看到它被处理掉了,但不知怎的,某个地方正在被再次使用,而且它的说法没有被处理掉。使用Watch我不知道这是否与我一直在观看的对象相同。

我希望我明白这一点。

2 个答案:

答案 0 :(得分:1)

尝试对相关对象持WeakReference并观看。从那里,您可以看到WeakReference的目标和相关对象实际上是否是同一个对象。

答案 1 :(得分:0)

只要有强烈的引用,对象就不会被垃圾收集器处理掉。某些代码可能正在调用对象上的Dispose,或者您可能正在使用弱引用。

使用Son of Strike调试扩展,您可以随时跟踪对象的GC根。我不确定我们是否可以收到事件通知。