дивитись лише перерви на запис, rwatch дозволяють вам перерватися на прочитане, а awatch дозволяють вам порушувати читання / запис.
Ви можете встановити точки зчитування сторожових точок на місцях пам'яті:
gdb$ rwatch *0xfeedface
Hardware read watchpoint 2: *0xfeedface
але одне обмеження стосується команд rwatch та awatch; ви не можете використовувати змінні gdb у виразах:
gdb$ rwatch $ebx+0xec1a04f
Expression cannot be implemented with read/access watchpoint.
Тому вам доведеться розширити їх самостійно:
gdb$ print $ebx
$13 = 0x135700
gdb$ rwatch *0x135700+0xec1a04f
Hardware read watchpoint 3: *0x135700 + 0xec1a04f
gdb$ c
Hardware read watchpoint 3: *0x135700 + 0xec1a04f
Value = 0xec34daf
0x9527d6e7 in objc_msgSend ()
Редагувати: О, і до речі. Вам потрібна або апаратна, або програмна підтримка . Програмне забезпечення, очевидно, набагато повільніше. Щоб дізнатись, чи підтримує ваша ОС апаратні пункти спостереження, ви можете переглянути налаштування оточення can-use-hw-watchpoints .
gdb$ show can-use-hw-watchpoints
Debugger's willingness to use watchpoint hardware is 1.
watch -location mTextFormatted
.