0
私は異なる行にreturn
できる長いC関数を持っています。 GDBに関数を実行させて、どの行に関数を出力することが可能ですか?return
ed?これまで私は一度に1行ずつ(n
を使って)行ってきましたが、これは面倒です。関数が返される場所をすばやく特定します
GDBで動的に関数を呼び出して、それが返された行を知ることはできますか?
私は異なる行にreturn
できる長いC関数を持っています。 GDBに関数を実行させて、どの行に関数を出力することが可能ですか?return
ed?これまで私は一度に1行ずつ(n
を使って)行ってきましたが、これは面倒です。関数が返される場所をすばやく特定します
GDBで動的に関数を呼び出して、それが返された行を知ることはできますか?
あなたはGCCでコンパイルしていると、コードは、マクロを実行すると検索+エディタ内のすべてのリターンを置き換えることであろう編集することができます場合は、1つの厄介なトリック...
int global_return_lineno;
#define return2(x) {global_return_lineno=__LINE__;return(x);}
次に、関数を呼び出すと、グローバル変数を検査します。
+1私はいつもデバッグ段階でこれを行います –
すべてのreturn文にブレークポイントを追加してみてください。私は通常、記述したような問題をデバッグする目的で、関数ルールごとに1つのreturn文を正確に追跡しようとします。 –
正確な複製:http://stackoverflow.com/questions/3649468/setting-breakpoint-in-gdb-where-the-function-returnsこの質問には良い答えがあります:http://stackoverflow.com/a/3649698/16509 – jjrv
@jjrv:ありがとうございます。私は組み込み機器で作業しているので、 'reverse-step'はありません。 – Randomblue