簡體   English   中英

GDB在觀察點被擊中后執行下一條指令

[英]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之后的所有內容都將被忽略。

有沒有辦法編寫這樣的腳本( gdbpython )?

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM