如何在return语句中全局设置条件断点?

时间:2014-09-22 05:53:14

标签: c++ gdb breakpoints conditional-breakpoint

我的代码充满了以下功能:

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;之前都有过多的错误消息。

是否可以使用falsereturn全局{/ 1}}上设置条件(条件:比如,函数返回GDB)断点?

1 个答案:

答案 0 :(得分:1)

  

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

据我了解,您希望在false内找到第一个返回f_i()的函数。您可以使用reverse debugging。 你可以:

  1. 完成当前帧执行

    (gdb)fin

  2. 如果返回值为false

    ,则向后退一步

    (gdb)reverse-step

  3. 如果您需要,可以继续向前,更深入地进入false传播电话

    (gdb)reverse-fin
    (gdb)反向步骤