Как можно использовать GDB для отслеживания любых изменений во всей области памяти? - PullRequest
2 голосов
/ 20 июля 2011

Например, могу ли я прервать любое изменение памяти в диапазоне адресов от <startaddress> до <endaddress>? Как насчет чтения и / или записи?

1 Ответ

2 голосов
/ 20 июля 2011

В Linux / x86 GDB использует регистры отладки процессора для реализации аппаратных точек наблюдения.Такие точки наблюдения бывают быстрыми - программа работает на полной скорости, пока процессор не остановится и не выдаст сигнал приложению, когда сработает точка наблюдения доступа или записи.

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

Последние версии Valgrind (SVN, но не выпущенные версии) реализуют заглушку удаленного протокола GDB и позволяют устанавливать точки наблюдения чтения или записи в произвольной памяти с помощью специальных команд монитора.

Так что, если вы включеныплатформа с Valgrind, и если ваше приложение работает с Valgrind достаточно быстро, то да: вы можете установить точки наблюдения в произвольных областях памяти.

...