dimakovalenko
@dimakovalenko

Evaluation в LLDB: как освободить память выделенную под переменные $1, $2, $3 etc?

Вводная. Если в консоли LLDB на iOS выполнить

(lldb) p/x $r1
(unsigned int) $1 = 0x07000006

(lldb) p/x $r1
(unsigned int) $2 = 0x07000006

(lldb) p/x $r1
(unsigned int) $3 = 0x07000006

...и т.д.

примерно 1500 раз, то в конце концов мы получим ошибку:

error: Couldn't allocate space for the stack frame: Couldn't malloc: address space is full
Errored out in Execute, couldn't PrepareToExecuteJITExpression

Дело в том, что каждый раз когда мы выполняем p/x $r1, отладчик проводит evaluation (не знаю соответствующего термина на русском, извините) выражения $r1, в ходе которой выделяется память для переменной $N (где N=1,2,3,...). После определенного количества попыток, память кончается и мы видим сообщение об ошибке.

Собственно вопрос: Можно ли как-то освободить память, выделенную отладчиком под переменные $1, $2, $3 и т.д.? Есть какая-то специальная команда для этого в LLDB (в документации не нашел -- может есть недокументированная?) или может скрипт какой можно написать на Python и прикрутить к LLDB?

Спасибо.
  • Вопрос задан
  • 2440 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы