不久之前,我阅读了“调试Windows程序”一书,其中一个广泛讨论的技巧是从Visual C ++调试器(快速)监视窗口调用函数。 幸运的是,我手边没有副本,我能找到的关于这方面的小文档真的很差。
那么你如何在观察窗口中调用成员函数?如果函数存在于DLL中该怎么办?如果它是命名空间的一部分怎么办?你能传递非平凡的参数吗?
让我们使用这个例子:我想调用QList<MyType>
的size()方法,其中MyType是一个自定义类型。
谢谢!
答案 0 :(得分:3)
它起作用并且非常有用。您可以在监视窗口中评估表达式或打开快速监视窗口(ctrl-alt-Q - 一个非常方便的快捷方式)。它将允许您调用大多数形式的成员函数。它通常倾向于失败的唯一时间是你有重载运算符,例如智能指针。对于没有重载运算符的简单类,您应该会发现它应该运行良好。我认为它应该接受非平凡的参数(尽管显然它取决于多么重要!)除了调用返回值的函数之外,还可以调用修改对象的函数 - 对于仅调用getter方法没有约束。 / p>
要记住的另一个显而易见的事情是所有变量都在本地堆栈框架中进行评估,因此请确保变量在堆栈中的当前点可见。
答案 1 :(得分:1)
我会说只是在监视窗口中编写list.size(),其中list是QList的一个实例,但我不确定这适用于所有类
答案 2 :(得分:0)
在Visual Studio中调试代码时,您确定可以调用对象的方法吗?因为我从来没有能够这样做。我所知道的最接近的调试功能是快速监视对象(包括堆栈中的本地对象,浏览调用堆栈),或编译并继续(我在VC6中使用它)允许更改代码,重新编译并继续调试从上一个声明......