GDBでステップイン、ステップオーバー、ステップアウトする方法は?



How Step Into Step Over



解決:

実行のヘルプはいくつかのヒントを提供します:

があるステップと次の命令(そしてまたnextiと草原)。



(gdb)サブルーチン呼び出しを続行して、次のステッププログラムを支援します。使用法:next [N] 'step'とは異なり、現在のソース行がサブルーチンを呼び出す場合、このコマンドはサブルーチンに入りませんが、代わりに呼び出しをステップオーバーし、事実上、単一のソース行として扱います。

だから私たちはそれを見ることができますステップステップ の中へ サブルーチン、しかし次はステップします 以上 サブルーチン。

NSステップと草原(そして次とnexti)は「行」または「命令」の増分で区別されます。



step-別のソース行に到達するまでプログラムをステップしますstepi-正確に1つの命令をステップします

関連する終了:

(gdb)helpfinish選択したスタックフレームが戻るまで実行します。使用法:finish戻ると、返された値が出力され、値の履歴に入れられます。

さらに役立つ情報はhttps://sourceware.org/gdb/onlinedocs/gdb/Continuing-and-Stepping.htmlにあります。


同じ質問があったのでここに来ました。最終的に、自分の目的のために、ループの「ステップアウト」のようなものを使用できるときはいつでも、ループの後に別のブレークポイントを設定して、プログラムに任せることができると思いました。引き続きループを終了し、その後ブレークポイントに到達します。それがほとんどの人にとって明白であるならば申し訳ありませんが、それはおそらくこの質問への答えを探している誰かにとって役立つでしょう。




コマンド 'finish'を使用します。これは時々「ステップアウト」と同じことをします。スタックが実行していること(通常は関数)を終了し、その後次の行に進みます。詳細については、コマンドを検索してください。