Я хотел бы отлаживать приложение Android NDK, точнее - я хочу проверить, какие аргументы ( r4 - r8 r1 - r4 регистры) передаются функции из общей библиотеки в apk.Android: debug shared library
То, что я пробовал:
- Я запустить gdbserver: 1234 --attach на устройстве
- Я запустить руку-Linux-androideabi-GDB из пакета NDK от Google на ПК
- Я установил solib-пути поиска и письменного целевой пульт: 1234
до сих пор, так хорошо. Теперь я пытаюсь установить точку останова (break <function name>
) (имя функции от objdump), но я получаю ответ: Cannot access memory at address <...>
. info shared
говорит, что библиотека загружена, означает ли это, что я не могу установить точку останова? Или я делаю что-то неправильно?
Вы понимаете, что регистры r4-r8 являются аргументами _not_ функции в AAPCS? Регистры r0-r3 - это первые 4 аргумента, остальные - в стеке. Цитируйте: «Первые четыре регистра r0-r3 (a1-a4) используются для передачи значений аргументов в подпрограмму и для возврата значения результата из функции. Они также могут использоваться для хранения промежуточных значений в рамках процедуры (но, в общем, только между вызовами подпрограммы) ._ "и" _A подпрограмма должна сохранять содержимое регистров r4-r8, r10, r11 и SP (и r9 в вариантах PCS, которые обозначают r9 как v6) ._ " –
Хорошо, спасибо для информации (я нашел информацию о регистрах r4-r8 где-то в сети), любые идеи о том, как установить функцию останова для работы? – Andy