Подтвердить что ты не робот

Могу ли я использовать gdb для чтения/записи с адреса?

Возможный дубликат:
Могу ли я установить точку останова на "доступ к памяти" в GDB?

У меня есть определенное место в памяти, которое повреждается, и я хотел бы видеть, когда вещи пишут в это место. Есть ли способ, которым я могу заставить gdb перерыть доступ к памяти на этот конкретный адрес?

4b9b3361

Ответ 1

Да.
Использование Watchpoints:
смотреть - только разрывает запись (и только при изменении значения)
rwatch - перерывы чтения, и
awatch - прерывается чтение/запись.

Более подробная информация из некоторых интернет-источников:

смотреть
watch - это способ gdbs установки контрольных точек данных, который остановит выполнение программы, если память изменится в указанном месте.

точки останова часов могут быть заданы для имени переменной или любого адреса.

watch my_variable
watch *0x12345678
where 0x12345678 is a valid address.

rwatch
Контрольные точки rwatch (read-watch) прерывают выполнение кода, когда программа пытается прочитать из переменной или ячейки памяти.

rwatch iWasAccessed
rwatch *0x12345678
where 0x12345678 is a valid address.

AWatch
awatch или access watches нарушают выполнение программы, если переменная или ячейка памяти записаны или прочитаны. Таким образом, поздравления - это часы и rwatches все в одном. Это удобный способ создания одной точки останова, чем двух отдельных.

awatch *0x12345678
where 0x12345678 is a valid address.