3

在 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 调试器中,这样我就可以设置一个断点,并查看字符串发生的所有事情。

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

我知道这听起来像是一个乌托邦,但我认为 Visual Studio 代码覆盖工具在检测程序集时实际上做了同样的工作。

4

1 回答 1

1

好吧,有多种技术可以在这里受益。

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

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

如果我误解了您正在查找的问题或信息,请告诉我。我会尽我所能提供帮助。

于 2010-09-08T15:05:54.140 回答