0

(私はデバッガーをコーディングしています。しかし、私の疑問はデバッガーユーザーの観点からもです)

多くの言語 (GDB、Eclipse) の多くのデバッガーは、一度に 1 つのステートメントを実行できる STEP_OVER コマンドを実装しています。STEP_INTO との違いは、スタック (つまり、呼び出された関数) でステップ ダウンを実行しないことです。これは多くの場合、良いことです。

 10  : y = f1(x);
 11  : z = y + 1;

ここで、上記の 10 行目にステップ オーバーしたとしますが、ブレークポイントが関数内f1(おそらくコール スタックの数レベルの深さ) でヒットしたとします。再開時に何が起こるべきかは明確ではありません: デバッガーは 11 行目で一時停止する必要があります (実質的に「ステップ オーバー」コマンドを完了します)。それともそれを忘れるべきですか?私は、ほとんどの (すべての?) デバッガーが後者を行うと信じています。それは標準/予想される動作ですか? 私自身、これは少しイライラしました。内側のブレークポイントから外側のステップオーバーされたステートメントまで実行を再開する方法は (一部のデバッガーで) ありますか? または、ブレークポイントを無視してステップオーバーを行う方法はありますか?

4

1 に答える 1

0

WinDbg は後者を行います。これは標準的な動作だと思います。ステップ オーバー コマンド中に発生する別のブレークポイントが心配な場合は、いつでも 11 行目に手動でブレークポイントを設定し、11 行目に到達するまで実行を続けることができます。または、他のブレークポイントを一時的に無効にすることもできますが、構成によっては、デバッガーが他の理由 (例外の発生など) で中断する可能性があることに注意してください。

于 2012-11-19T22:05:58.680 に答える