2012-04-30 8 views
0

私は異なる行にreturnできる長いC関数を持っています。 GDBに関数を実行させて、どの行に関数を出力することが可能ですか?return ed?これまで私は一度に1行ずつ(nを使って)行ってきましたが、これは面倒です。関数が返される場所をすばやく特定します

GDBで動的に関数を呼び出して、それが返された行を知ることはできますか?

+0

すべてのreturn文にブレークポイントを追加してみてください。私は通常、記述したような問題をデバッグする目的で、関数ルールごとに1つのreturn文を正確に追跡しようとします。 –

+0

正確な複製:http://stackoverflow.com/questions/3649468/setting-breakpoint-in-gdb-where-the-function-returnsこの質問には良い答えがあります:http://stackoverflow.com/a/3649698/16509 – jjrv

+0

@jjrv:ありがとうございます。私は組み込み機器で作業しているので、 'reverse-step'はありません。 – Randomblue

答えて

3

あなたはGCCでコンパイルしていると、コードは、マクロを実行すると検索+エディタ内のすべてのリターンを置き換えることであろう編集することができます場合は、1つの厄介なトリック...

int global_return_lineno; 
#define return2(x) {global_return_lineno=__LINE__;return(x);} 

次に、関数を呼び出すと、グローバル変数を検査します。

+0

+1私はいつもデバッグ段階でこれを行います –

関連する問題