опустили «разыменования оператор» *
при установке точки часов в lldb, просто передать адрес:
watchpoint set expression -- 0x123456
# short form:
w s e -- 0x123456
устанавливает точку наблюдения в ячейке памяти 0x123456
. При желании вы можете установить количество байтов для просмотра с помощью --size
. Пример в краткой форме:
w s e -s 2 -- 0x123456
Вы также можете установить точку наблюдения на переменной:
watchpoint set variable <variable>
# short form:
w s v <variable>
Пример: С помощью следующего кода и точки останова, установленной на второй строке:
int x = 2;
x = 5;
Я сделал это в консоли отладчика Xcode:
(lldb) p &x
(int *) $0 = 0xbfffcbd8
(lldb) w s e -- 0xbfffcbd8
Watchpoint created: Watchpoint 1: addr = 0xbfffcbd8 size = 4 state = enabled type = w
new value: 2
(lldb) n
Watchpoint 1 hit:
old value: 2
new value: 5
(lldb)
Проще говоря, я мог бы установить точку наблюдения с
(lldb) w s v x
Watchpoint created: Watchpoint 1: addr = 0x7fff5fbff7dc size = 4 state = enabled type = w
declare @ '/Users/martin/Documents/tmpprojects/watcher/watcher/main.c:16'
watchpoint spec = 'x'
я получаю это: оценка выражение ошибки адреса, чтобы наблюдать не удалось, выражение оценивается – user3001909
@ user3001909: Странно, я испытал это. - Я добавил пример. –
Я попробовал ваш пример, lldb сказал использование необъявленного идентификатора «x». Затем сделал w-e-0xOFFSET, и он сработал. точка наблюдения: Watchpoint 1: addr = 0xOFFSET size = 4 state ... новое значение: 10. Спасибо! – user3001909