смотреть только разрывы при записи, 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.