检测字符串

时间:2010-05-14 17:22:35

标签: .net cil instrumentation

在C ++时代的某个地方,我制作了一个库,它启用了计算历史的字符串表示。 有一个数学表达式:

TScalar Compute(TScalar a, TScalar b, TScalar c)
{
 return ( a + b ) * c;
}

我可以渲染它的字符串表示形式:

r = Compute(VerbalScalar("a", 1), VerbalScalar("b", 2), VerbalScalar("c", 3));
Assert.AreEqual(9, r.Value);
Assert.AreEqual("(a+b)*c==(1+2)*3", r.History );

C ++运算符重载允许用复杂的自我跟踪实体替换一个简单类型,该实体具有对象发生的所有事情的内部树表示。

现在我希望NET字符串具有相同的可能性,而不是变量名称,我希望看到代码中影响字符串的所有位置的堆栈跟踪。

我希望它能够与现有代码和现有编译程序集一起使用。

此外,我希望所有这些都挂钩到visual studio调试器,所以我可以设置一个断点,并查看字符串发生的所有事情。

哪种技术会允许这种事情?

我知道这听起来像是一个乌托邦,但我认为视觉工作室代码覆盖工具在组装工具时实际上也做同样的工作。

1 个答案:

答案 0 :(得分:1)

嗯,有多种技术可以从中受益。

一个是构建自己的日志记录系统,以跟踪您寻找的信息。该信息列表可以通过每个计算函数传递,或者“类范围”变量可以包含该信息。这是一种更自己的方法。它不低。

如果你想深入挖掘字符串类,有一种方法可以反映字符串函数。这个反射器系统声称它可以与调试系统连接(虽然我没试过这个)。您可以尝试使用TestDriven.NET.NET Reflector。此外,如果您使用的是Visual Studio 2008+ Professional或更高版本,则应该能够直接调试.NET框架本身。这将允许您查看字符串发生了什么。

如果我误解了你正在寻找的问题或信息,请告诉我。我将尝试以任何方式提供帮助。