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 问题开始。
假设我有一个 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