IntelliTrace 日志可以用于检查复杂类型的值吗

Can IntelliTrace log be used to inspect value of a complex type

假设我有一个 class A,它包含一个 class B,它本身包含另一个 class C。如下所示

class A
{
  B  b;
}

class B
{
  C  c;
}

我有一个方法将 class A 的实例作为参数。

private void MyMethod(A a)
{

}

假设这个 class 在此方法中传递的实例包含一些导致某些问题的数据,我需要解决这个问题。如果捕获 IntelliTrace 日志,我是否能够检查 A 实例及其任何子实例的值?

默认情况下这是不可能的,因为 IntelliTrace 有两个限制,即:

  • IntelliTrace records/captures 只有 fields/properties 的值 是原始数据类型。

  • IntelliTrace 不分析对象图。

让我们扩展您的示例:

public class A
{
   public int Prop1 { get; set; }
   public C Prop2  { get; set; }
}

在这种情况下,在 IntelliTrace 日志中您只会找到 Prop1 的值,因为它是一个整数。在 Prop2 的情况下,您只会看到它是否已设置。

作为解决方法,您可以尝试定义自定义诊断事件。然而,这并不容易。您可以从阅读 Custom TraceSource and debugging using IntelliTrace and VS 2010 : Customize IntelliTrace events. See also and 问题开始。