c# - 在 C# 中跟踪实例?

标签 c# .net visual-studio debugging instance

<分区>

有没有办法在调试时跟踪 Visual Studio 中 C#/.NET 中的单个实例?我发现它有时真的很有用。

另一种看待它的方式是实例上的断点而不是代码上的断点。因此,每次我的实例被访问和/或修改时,执行都会停止,我会看到访问/修改我的实例的代码行。

在 C++ 中,等效项是监视实例所在的内存片段,或者只是指向实例的指针。这种方法不适用于托管代码,因为 .NET 中的对象会四处移动,因此我需要 C++ 中指针的等效项。

我知道 C# 中的 WeakReferences,但我不确定它们在调试时是否有用?

编辑1: 这个问题不同于“调试时,是否有办法判断一个对象是否是不同的实例?”,因为我对比较两个引用不感兴趣,但我想访问单个对象。

最佳答案

我不知道开箱即用,但 VS 确实支持条件断点。一种选择是:

  1. 在您感兴趣的类中的所有方法上放置断点
  2. 调试你的代码,直到第一个被命中
  3. 找到实例的HashCode
  4. 将所有断点设为 GetHashCode() == 您之前检索到的哈希码
  5. 让应用程序继续运行,直到再次命中断点
  6. 在“调用堆栈”窗口中查看哪一行代码正在调用您的方法

有点笨拙,但会工作...

关于c# - 在 C# 中跟踪实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31466423/

相关文章:

c# - Entity Framework 6 导航集合为空而不是空

c# - .NET 中 ","(逗号)和 "."(点)的 KeyCode 是什么?

c# - 带有表达式树的复杂构建器方法

c# - 什么是 PixelOffsetMode?

visual-studio - Visual Studio 2015 中的复制/粘贴行似乎已损坏

c# - 如何在*不*使用绑定(bind)的情况下针对对象评估 PropertyPath? (即绑定(bind)本身使用什么?)

c# - 为什么 ScriptEngine 没有 Execute 方法了?

c# - 使用 C# 安装 MySQL 实例(和架构)

visual-studio - 将 Wix 项目迁移到 4.0 版

c# - 将子类转换为继承类