Как я могу отладить собственный исполняемый файл Android и библиотеку, не интегрированную непосредственно в приложение APK

У меня есть приложение для Android, которое состоит из APK на основе Java, нативный исполняемый файл и нативная библиотека. АПК общается с собственным исполняемым файлом (root NDK c / c ++) и библиотекой через сокет.

Я не уверен, имеет ли это значение, но исполняемый файл и библиотека компилируются через cmake, копируются в исполняемый файл и затем запускаются от имени пользователя root. Мне нужно, чтобы какой-то тип отладки работал с точками останова и тому подобным, независимо от того, идет ли это непосредственно в Android Studio или через командную строку.

2

Решение

Вам нужно будет запустить gdbserver на устройстве и позволить ему подключиться к вашему исполняемому файлу.

Gdbserver поставляется с NDK, как правило, под <ndk>/prebuilt/android-arm/gdbserver/

  1. Скопируйте двоичный файл gdbserver на ваше устройство, например, в /data/local/tmp и дать ему исполняемые разрешения с chmod

  2. Если ваш исполняемый файл уже запущен, найдите его PID с ps введите команду и присоедините к ней gdb:

    gdbserver :5039 --attach <PID>

Обратите внимание, что 5039 — это номер порта, который обычно используется для отладки с помощью gdb, вы можете использовать свой собственный, если хотите

  1. настроить переадресацию портов с устройства на компьютер с

    adb forward tcp:5039 tcp:5039

  2. Запустите GDB локально, обратите внимание, что вам нужен целевой GDB, который также поставляется с ndk, обычно в

    <ndk>toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-gdb

  3. Присоедините GDB к вашему процессу

    target remote :5039

И отсюда вам нужно использовать команды GDB, которые соответствуют вашим ожиданиям отладки (установить точки останова, символы загрузки, пошаговое выполнение и т. Д.), Для примеров использования шпаргалка или спросите в комментариях

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]