Эта страница деталь с помощью LLDB или GDB для разработки ОС. Для разработки приложений, см отлаживать приложение вместо, который объясняет , как использовать Android Studio GUI (на основе LLDB).
GDB устарел и скоро будет удален. Если вы переходите от GDB для LLDB, вероятно , вы должны начать с чтения LLDB Учебник . Если вы являетесь опытным пользователем GDB, то GDB для LLDB команды карта очень полезен при переводе.
Предпосылки
Чтобы использовать отладчик:
- Настройка среды сборки с обычной
envsetup.sh
командой. - Выполните ту же
lunch
команду , которую вы использовали при строительстве.
Для получения дополнительной помощи при настройке среды см Набор до среды .
Отладка запущенных приложений или процессов
Для подключения к работающему приложению или нативному демону, используйте gdbclient.py
с PID. Например, чтобы отладить процесс с PID 1234, запустите это на хосте:
gdbclient.py -p 1234
Сценарий устанавливает переадресацию портов, запускает соответствующую заглушку удаленной отладки на устройстве, запускает отладчик на хосте, настраивает его для поиска символов и подключает его к заглушке удаленной отладки.
Отладка запуска собственного процесса
Для отладки процесса , как он начинает, использовать gdbclient.py
с -r
опции. Например, для отладки ls /bin
, запустите это на хосте:
gdbclient.py -r /system/bin/ls /bin
Затем введите continue
на отладчик подсказки.
Отладка запуска приложения
Иногда вы хотите отладить приложение , как он начинает, например, когда есть сбой , и вы хотите , чтобы пройти через код , чтобы увидеть , что произошло до аварии. Прикрепление работы в некоторых случаях, но в других случаях это невозможно , потому что приложение падает , прежде чем вы можете прикрепить. logwrapper
подход (используется для strace
) не всегда работает , потому что приложение может не иметь разрешений на открытие порта и gdbserver
наследованного это ограничение.
Чтобы отладить запуск приложения, используйте параметры разработчика в настройках, чтобы указать приложению дождаться подключения отладчика Java:
- Перейдите в раздел Настройки> Параметры разработчика> Выбрать приложение отладки и выберите приложение из списка, затем нажмите Ожидать отладчик.
- Запустите приложение, либо из пусковой установки или с помощью командной строки для запуска:
adb shell am start -a android.intent.action.MAIN -n APP_NAME/.APP_ACTIVITY
- Подождите, пока приложение загрузится, и появится диалоговое окно с сообщением, что приложение ожидает отладчика.
- Приложить
gdbserver
/gdbclient
нормально, набор контрольных точек, а затем продолжить процесс.
Чтобы приложение работало, подключите отладчик Java Debug Wire Protocol (JDWP), например Java Debugger (jdb):
adb forward tcp:12345 jdwp:XXX # (Where XXX is the PID of the debugged process.)
jdb -attach localhost:12345
Отладка приложений или процессов, которые дают сбой
Если вы хотите debuggerd
приостановить врезались процессы таким образом, что вы можете подключить отладчик, установить соответствующее свойство:
- После того, как Android 11
adb shell setprop debug.debuggerd.wait_for_debugger true
- Android 11 и нижний
adb shell setprop debug.debuggerd.wait_for_gdb true
- Android 6,0 Зефир и ниже
adb shell setprop debug.db.uid 999999
В конце обычного аварийного выхода, debuggerd
обеспечивает копирование и вставку инструкции в LogCat , показывающую , как подключить отладчик разбившегося процесса.
Отладка без символов
Для 32-битного ARM, если у вас нет символов, gdb
не может определить , какой набор инструкций он разборка (ARM или Thumb). Чтобы указать набор инструкций, выбранный по умолчанию, когда информация о символе отсутствует, установите следующее свойство:
set arm fallback-mode arm # or thumb
Отладка с помощью VS Code
LLDB поддерживает отладку кода платформы на Visual Studio кодекса . Вы можете использовать интерфейс отладчика VS Code вместо интерфейса CLI LLDB для управления и отладки собственного кода, выполняемого на устройствах.
Перед использованием VS кода для отладки, установите расширение CodeLLDB .
Для отладки кода с помощью VS Code:
- Убедитесь , что все сборки артефактов (например, символы) , необходимые для запуска
gdbclient.py
илиlldbclient.py
присутствуют. - Выполните следующую команду:
lldbclient.py --setup-forwarding vscode-lldb ANY_OTHER_FLAGS -p pid | -n proc-name | -r ...
Это выводит объект JSON и
lldbclient.py
продолжает работать. Это ожидается; не убиваетlldbclient.py
программы.-r
флаг должен быть последним флаг , если он присутствует из - за того , как флаги анализируются с помощью инструмента. - На вкладке отладки в VS кода выберите конфигурацию надстройки, а затем выберите LLDB: Выборочная Launch. Это открывает
launch.json
файл и добавляет новый объект JSON в список. - Удалите только что добавленную конфигурацию отладчика.
- Скопируйте объект JSON выведенный
lldbclient.py
и вставить его в объект просто удаляется. Сохраните изменения. - Чтобы обновить окно , чтобы обновить список отладчика, нажмите Ctrl + Shift + P и тип
reload window
. - Выберите новую конфигурацию отладчика и нажмите запустить. Отладчик должен подключиться через 10–30 секунд.
- Когда вы закончите отладку, перейдите к терминальному беговой
lldbclient.py
и нажмите Enter , чтобы закончитьlldbclient.py
программу.