2010-05-14 101 views
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代码覆盖工具实际上在测试程序集时执行相同类型的工作。

回答

1

那么,有多种技术可以在这里受益。

一个是建立自己的日志记录系统,以跟踪你所寻求的信息。该信息列表可以通过每个计算函数传递,或者“类作用域”变量可以包含该信息。这是一个更自己做的方法。它的水平不低。

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

如果我误解了你正在寻找的问题或信息,请让我知道。我会尽我所能协助。