在GDB 中,您可以設定斷點來監視特定變數並識別它們何時被訪問或修改。以下是用於此目的的GDB 指令與技術的細分:
觀察點指令:
在記憶體位置設定觀察點:
您可以使用rwatch在記憶體位置設定觀察點指令:
gdb$ rwatch *0xfeedface
每當讀取記憶體位址 0xfeedface 時,都會觸發斷點。
表達式上觀察點的限制:
請注意不能在涉及的表達式上設定 GDB觀察點變數:
gdb$ rwatch $ebx+0xec1a04f Expression cannot be implemented with read/access watchpoint.
要解決此問題,請手動展開表達式:
gdb$ print $ebx = 0x135700 gdb$ rwatch *0x135700+0xec1a04f
硬體與軟體支援:
硬體觀察點提供比軟體觀察點更快的效能。若要檢查您的作業系統是否支援硬體觀察點,請執行以下命令:
gdb$ show can-use-hw-watchpoints
如果輸出為 1,則硬體觀察點可用。
以上是如何使用斷點監控 GDB 中的變數存取和記憶體讀取/寫入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!