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

Перерыв LLDB по адресу

Я извиняюсь за вероятный тривиальный вопрос, но я натыкаюсь на стену, поскольку Google дает мне те же неприменимые ответы снова и снова.

Я пытаюсь установить точку останова в LLDB. После прочтения документации доступные мне варианты - либо остановиться на определенной строке в источнике, либо на определенном символе.

То, что я хочу сделать, - установить точку останова в определенном месте памяти.

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

В псевдокоде:

break 0x00010000

ломается, когда EIP указывает на 0x00010000.

Как я могу это сделать?

4b9b3361

Ответ 1

breakpoint set имеет адресную опцию; вы должны набрать help breakpoint set, чтобы увидеть все. Для вашего конкретного примера

(lldb) br s -a 0x10000

(Вы всегда можете использовать более короткие версии имен команд в lldb, которые недвусмысленны, поэтому ввод текста breakpoint set не требуется)

Ответ 2

Альтернативой является использование "запуска процесса - остановка на входе...". Это позволит вам установить точки останова после запуска программы, а затем "продолжить" позволит вам остановиться на первой точке останова. Интересно (тестирование в Ubuntu) с использованием --stop-at-entry занимает намного больше времени (~ 3 секунды). Мне нужно использовать это на OS X, и, возможно, это будет быстрее.