20
可能重複:
Can I set a breakpoint on 'memory access' in GDB?我可以從地址讀取/寫入gdb中斷嗎?
我在內存中的特定位置,這是獲得損壞,我想能夠清楚地看到,當事情寫入該位置。有什麼辦法可以讓gdb在訪問特定地址的內存上斷開嗎?
可能重複:
Can I set a breakpoint on 'memory access' in GDB?我可以從地址讀取/寫入gdb中斷嗎?
我在內存中的特定位置,這是獲得損壞,我想能夠清楚地看到,當事情寫入該位置。有什麼辦法可以讓gdb在訪問特定地址的內存上斷開嗎?
是的。
使用觀察點:
表 - 只有打破上書寫(且僅當值變化)
rwatch - 讀上休息,並
awatch - 讀/寫中斷。
一個從一些互聯網人士更詳細的介紹:
手錶
手錶設置數據斷點將停止程序的執行gdb的方式,如果在指定位置記憶的變化。
可以在變量名稱或任何地址位置上設置監視斷點。
watch my_variable
watch *0x12345678
where 0x12345678 is a valid address.
rwatch
rwatch當程序試圖從一個變量或存儲器位置讀取(讀手錶)斷點打破代碼的執行。如果一個變量或存儲器位置寫入或讀出
rwatch iWasAccessed
rwatch *0x12345678
where 0x12345678 is a valid address.
awatch
awatch或接入手錶打破程序的執行。總之,awatches都是一個手錶和rwatches。創建一個斷點比兩個單獨的斷點更方便。
awatch *0x12345678
where 0x12345678 is a valid address.
不知怎的,你在地方的'x'寫''×... –
@Alok使用'休息之間awatch'由於讀取或寫入時,如何不同? –
有沒有什麼辦法可以觀看大片的記憶(幾個字)? –