LLDB Как установить точку останова, которая останавливается при регистрации == somevalue?

Как установить точку останова в lldb, которая останавливается, когда register == somevalue (rdi = 0x0000000000000000)? Является ли это возможным?

1 ответ

Решение

Анализатор выражений lldb обеспечивает $rdi, $rsiи т. д. как вспомогательные переменные для значений регистра. Так:

(lldb) break modify -c "$rdi == 0x0000000000000000" <BKPT_NO>

сделаю работу. Вы также можете указать опцию -c (т.е. --condition) при установке точки останова.

Обратите внимание, что для архитектур, которые передают аргументы в регистрах, lldb также имеет "$arg1", "$arg2" и т. Д. Это просто псевдонимы для определенных ABI регистров передачи аргументов, так что если вы где-то в середине функции, они больше не будет содержать значения аргумента. Но для установки точки останова в начале функции они могут пригодиться.

Другие вопросы по тегам