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

How to set conditional breakpoint on return statement globally?

本文关键字:全局设置 条件断点 语句 return      更新时间:2023-10-16

我有一个充满函数的代码,比如:

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;之前都有错误台面是过分的。

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

在执行的某个步骤中,某些被调用者可能返回错误的

据我所知,您希望在f_i()中找到返回false的第一个函数。您可以对此使用反向调试。您可以:

  1. 完成当前帧执行

    (gdb)鳍

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

    (gdb)反步

  3. 如果需要,您可以继续后退,深入false传播调用

    (gdb)反向翅片
    (gdb)反步