4

次のような関数でいっぱいのコードがあります。

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

実行のあるステップで、一部の呼び出し先が を返しfalsefalseすべての呼び出し元に伝播します。現時点ではエラーメッセージを書くのは難しいです (コードは頻繁に変更されます)。デバッグ中に、すべての前にエラー メッセージが表示されるのは過剰return false;です。

を使用して、ステートメントに条件付き (条件: 関数 returnfalseなど) ブレークポイントをreturnグローバルに設定することは可能GDBですか?

4

1 に答える 1

2

実行のあるステップで、一部の呼び出し先が false を返すことがあります

false私が理解しているように、内部で返された最初の関数を見つけたいと考えていますf_i()これにはリバース デバッグを使用できます。あなたはできる:

  1. 現在のフレームの実行を終了する

    (gdb) フィン

  2. 戻り値がfalse

    (gdb) リバースステップ

  3. false必要に応じて、伝播呼び出しをさらに深くまで遡ることができます。

    (gdb) 逆フィン
    (gdb) 逆ステップ

于 2014-09-22T10:17:26.337 に答える