在gdb中,我有finish
命令輕鬆完成功能框架的執行,通常在調試器中遍歷代碼時,在查看循環的幾次迭代後,我想完成循環並繼續步行它。目前,我通過在循環和continue
之後的第一行上設置一個斷點來實現這一點,但是,如果有一個簡單的gdb命令具有相同的效果,但不需要設置斷點,那將非常方便後來被清除。是否有一個gdb命令來完成一個循環結構?
gdb中是否有完成正在執行的當前循環的執行?
在gdb中,我有finish
命令輕鬆完成功能框架的執行,通常在調試器中遍歷代碼時,在查看循環的幾次迭代後,我想完成循環並繼續步行它。目前,我通過在循環和continue
之後的第一行上設置一個斷點來實現這一點,但是,如果有一個簡單的gdb命令具有相同的效果,但不需要設置斷點,那將非常方便後來被清除。是否有一個gdb命令來完成一個循環結構?
gdb中是否有完成正在執行的當前循環的執行?
是否有一個gdb命令來完成一個循環結構?
環路的最後一行,或until NNN
執行until
其中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.
那麼'until'和'advance'之間有什麼區別? – Jester
@Jester「此命令與until類似,但是advance不會跳過遞歸函數調用,並且目標位置不必與當前幀位於同一幀中。」 https://sourceware.org/gdb/onlinedocs/gdb/Continuing-and-Stepping.html –
此外,它看起來像「advance」更精確,因爲它只跳轉到實際的代碼位置。 –
gdb
不知道循環結束的地方,所以它不能這樣做。我認爲你可以做的最好的做法是在循環之後使用advance
命令。
'jump'執行變更版本:https://stackoverflow.com/questions/2200556/how-do-i-get-gdb-to-break -out-of-a-loop –