web-dev-qa-db-ja.com

ループ構造を完成させるgdbコマンドはありますか?

Gdbでは、finishコマンドを使用して関数フレームの実行を簡単に終了できます。多くの場合、デバッガーでコードをウォークスルーするときに、ループのいくつかの反復を確認した後、ループを終了して、その後も歩き続けます。現在、ループとcontinueの後の最初の行にブレークポイントを設定することでこれを行っていますが、これと同じ効果を持つ単純なgdbコマンドがあり、設定され、後でクリアされるブレークポイント。

実行中の現在のループの実行を終了するためのgdbの方法はありますか?

27
WilliamKF

ループ構造を完成させるgdbコマンドはありますか?

ループの最後の行でuntilを実行するか、until NNNここで、NNNはループの最後の行です。

(gdb) help until
Execute until the program reaches a source line greater than the current
or a specified location (same args as break command) within the current frame.

ブレークポイントを設定して後でクリアする必要はありません。

一時的なブレークポイントは自動的にクリアされます:

(gdb) help tbreak
Set a temporary breakpoint.
Like "break" except the breakpoint is only temporary,
so it will be deleted when hit.  Equivalent to "break" followed
by using "enable delete" on the breakpoint number.
27

gdbはループがどこで終了するかわからないので、それを行うことはできません。私ができる最善のことは、ループの後の場所でadvanceコマンドを使用することです。

5
Jester