[英]GDB execute next instruction after watchpoint is hit
我具有以下形式的功能:
void foo(){
int *a = //...
*a = 1;
//some actions
*a = 2;
//some actions
*a = 3;
//some actions
//etc...
}
我想設置一個觀察點上a
,用下一個指令si
,打印寄存器,然后一直持續到觀察點a
被再次命中和重復。
我寫了以下腳本:
b foo
watch *a
commands
si
info reg
cont
end
cont
問題在於它在第一個觀察點被擊中后停止,既不打印寄存器也不繼續執行。 正如我在文檔中閱讀的
在恢復執行的命令之后,命令列表中的任何其他命令將被忽略。 這是因為任何時候恢復執行(即使是簡單的下一步或步驟),都可能會遇到另一個斷點,該斷點可能具有自己的命令列表,這導致要執行的列表含糊不清。
si
之后的所有內容都將被忽略。
有沒有辦法編寫這樣的腳本( gdb
或python
)?
在watch *a
之前,您可以通過run
運行程序。
如果沒有,您將得到如下信息: No symbol "a" in current context.
所以試試這個:
b foo
run
watch *a
commands
si
info reg
cont
end
cont
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.