Debugging 调试方法调用的结果,而不添加中间代码行

Debugging 调试方法调用的结果,而不添加中间代码行,debugging,visual-c++,Debugging,Visual C++,我正在努力提高调试会话的效率是否有办法将表达式的结果视为隐式局部变量? 在这个人为设计的示例中,我想知道cs.method2()的计算结果是什么,而无需编写一行代码或单步执行该方法 bool myObject::isEmpty(double d) { bool res; custString cs(d); // bool dresult = cs.method2(); res = !cs.method1().empty() && cs.m

我正在努力提高调试会话的效率是否有办法将表达式的结果视为隐式局部变量?

在这个人为设计的示例中,我想知道cs.method2()的计算结果是什么,而无需编写一行代码或单步执行该方法

bool myObject::isEmpty(double d)
{
     bool res;
     custString cs(d);

     // bool dresult = cs.method2();
     res = !cs.method1().empty() && cs.method2();

     return res; //set break here.
}
我不想进入method2,因为它是一个深链,我只对结果感兴趣,但它总是传递给一个返回,比如

return _mycs_string(_dat);
所以我必须一步一步地进入可能有相同模式的呼叫

我不想写代码拆分行,因为这是一个我无意修改的库

谢谢。

我的建议是按照这里的代码编写代码,在前一行中显式设置cs.method2()的结果

这个建议的原因是,我非常相信编译器开发人员能够在从函数返回之前优化掉“不必要的”局部变量

(您可以查看编译器中的结果代码,了解它对'res'变量的作用)


另一种可能是在从cs.method2()调用返回时跟踪堆栈(在调试器中),因为这是存储返回值的地方。

您能更具体地说明您的建议吗?如果我通过myObject::isEmpty(d)走出(f10),我在看什么?如果不需要的话,我不想在这个方法下面进行任何操作。每个调试器都会不同,但是您应该能够在从cs.method2()返回之前查看堆栈,这是存储返回值的地方。编写自己的返回int的函数(例如),然后在返回之前查看堆栈窗口。如果您不介意使用windbg,可以在custString::method2()上设置断点。当到达该断点时,发出
gu
,它将运行到函数的返回地址。然后您可以发出
reax
,它将保存返回值。如果是64位,则
r rax
将显示返回值。您可能在正确的轨道上。必须有一个vs等价物。