0

我知道我们有 Watch 在 Debug 模式下监控一个变量,你可以将变量更改、删除或分配给另一个对象。

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

假设我有一个方法将接收一个对象并分配给一个变量

IE:

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

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

如果我在这个 tempObject 上使用 Watch,Watch 中的 tempObject 将在新分配的对象值时不断变化。

我在这里感兴趣的是只看这个 anObject 。说第二次调用这个方法,我发现这个anObject有centtain参数不正确,我想追踪这个对象,看看这个不正确的参数什么时候会变回正确的参数。(甚至超出范围)。

我怎样才能做到这一点?还是可以在 Visual Studio 中做到这一点?

因为现在我遇到了类似的问题,我有一个我看到它被处理掉的 centain 对象,但不知何故又在某个地方被再次使用并且它说没有被处理掉。使用 Watch 我不知道这是否是我一直在看的同一对象。

我希望我说清楚了。

4

2 回答 2

1

尝试对有问题的对象持有WeakReference并观察它。从那里您可以查看 的目标WeakReference和所讨论的对象是否实际上是同一个对象。

于 2012-10-19T19:04:39.927 回答
0

只要有对它的强引用,垃圾收集器就不会丢弃一个对象。某些代码可能在对象上调用 Dispose,或者您可能正在使用弱引用。

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

于 2012-10-19T18:42:30.650 回答