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



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

在这个人为的例子中,我想知道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'变量)

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

最新更新