4

我有一个充满功能的代码,例如:

bool f_i() 
{
    if (!f_0()) {
        return false;
    }
    if (!f_1()) {
        return false;
    } 
    // ...
    if (!f_n()) {
        return false;
    } 
    return true;
}
// etc...

在执行的某个步骤中,一些被调用者可以返回false,并false通过所有调用者传播。目前很难编写错误消息(代码正在迅速更改)。在调试期间,在每个return false;.

是否可以使用全局在语句上设置条件(条件:例如,函数返回false)断点?returnGDB

4

1 回答 1

2

在某些执行步骤中,一些被调用者可以返回 false

据我了解,您想找到返回的第一个函数falseinside f_i()。您可以为此使用反向调试。你可以:

  1. 完成当前帧执行

    (gdb) 鳍

  2. 后退一步,如果返回值是false

    (gdb) 反步

  3. 如果需要,您可以继续向后,更深入地了解false传播调用

    (gdb) 反向鳍
    (gdb) 反向步

于 2014-09-22T10:17:26.337 回答