.net 插入字符串的指令 C++中的某个地方,我编写了一个库,它支持计算历史的字符串表示。 具有如下数学表达式: TScalar Compute(TScalar a, TScalar b, TScalar c) { return ( a + b ) * c; }

.net 插入字符串的指令 C++中的某个地方,我编写了一个库,它支持计算历史的字符串表示。 具有如下数学表达式: TScalar Compute(TScalar a, TScalar b, TScalar c) { return ( a + b ) * c; },.net,cil,instrumentation,.net,Cil,Instrumentation,我可以渲染它的字符串表示: 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++操作符重载允许用复杂的自跟踪实体替换简单类型,该实体具有对象发生的所有事件的内部树表示 现在,我希望对网络字符串也有同样的可能性,只是我希望看到代码中

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

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++操作符重载允许用复杂的自跟踪实体替换简单类型,该实体具有对象发生的所有事件的内部树表示

现在,我希望对网络字符串也有同样的可能性,只是我希望看到代码中影响字符串的所有位置的堆栈跟踪,而不是变量名

我希望它能够与现有的代码和现有的编译程序集一起工作

我还希望所有这些都能挂接到VisualStudio调试器中,这样我就可以设置一个断点,并查看字符串中发生的一切

哪种技术允许这种事情


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

好吧,有多种技术可以从中受益

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

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

如果我误解了你的问题或信息,请让我知道。我会尽我所能提供帮助