Таким образом, на x86 вы можете поместить ограниченное количество аппаратных средств watchpoint
s в эту изменяемую переменную:
Если вам повезет, в глобальном масштабе вы можете обойтись с
watch some_global_var
Но отладчик может все же решить, что это не фиксированный адрес, и сделать программную точку наблюдения.
Итак, вам нужно получить адрес и посмотреть, что именно:
p &some_global_var
(int*)0x000123456789ABC
watch (int*)0x000123456789ABC
Теперь, когда вы r
начинаете, отладчик должен появиться при первой инициализации значения, возможнов ноль и / или когда он инициализируется неожиданным значением.Если вам повезет, список соответствующего исходного кода расскажет вам, как он был инициализирован.Как уже говорили другие, вам, возможно, потребуется выяснить, почему эта строка кода генерирует это значение, что может быть проблемой со сложными макросами.
Если это вам не помогает или неожиданно останавливается во время запуска, затем вы должны сначала dis
включить точку наблюдения, затем starti
, чтобы перезапустить вашу программу и остановить как можно скорее.Затем p
ваш глобал, и если он еще не имеет магического значения, en
может активировать точку наблюдения и c
продолжить.Надеюсь, это пропустит ненужный запуск и увеличит значение проблемы.