Android удаленный вывод GDB мучительно медленно

Я отлаживаю библиотеку C ++ для Android с помощью GDB (gdbserver + gdb на хосте), и я заметил, что вывод gdb очень очень медленный.

Например. приложение имеет около 15 потоков, и когда я печатаю thread apply all bt для вывода всех трассировок стека в терминал / файл требуется 15-20 секунд. Весь вывод составляет около 200 строк текста, он не должен быть таким медленным!

Более того, на моей хост-машине (64-битной Ubuntu) то же самое занимает не более 0,1-0,2 секунды!

Я подозревал, что вывод терминала на хост может быть причиной замедления, но это не так. Даже при следующих настройках это занимает столько же времени:

set width 0
set height 0
set pagination 0
set logging redirect on
set logging overwrite on
set logging file prof.txt
set logging on

Я не совсем уверен, что является основной причиной замедления, это либо медленное разматывание стека на Android или медленная передача данных через GDB<-> Соединение с gdbserver. Но я подозреваю, что последнее, потому что, когда GDB выводит данные adb Процесс занимает много процессорного времени.

Мой вопрос: как мне сделать вывод GDB в файл быстрее?

Пожалуйста, помогите, если кто-нибудь знает, как добиться одного из следующих действий:

  • Установите некоторые параметры GDB / ADB, чтобы ускорить передачу данных
  • заставить gdbserver сохранять данные в локальный файл (на устройстве Android) вместо отправки их удаленному клиенту gdb
  • Создайте клиент GDB для целевого устройства и выполните отладку на устройстве

РЕДАКТИРОВАТЬ:

Стоит отметить, что я использую adb forward установить TCP-соединение между GDB и GDB-сервером:

adb push $NDK_ROOT/prebuilt/android-arm/gdbserver/gdbserver /data/local/tmp
adb shell chmod 777 /data/local/tmp/gdbserver
adb shell /data/local/tmp/gdbserver :5039 --attach $1 &
adb forward tcp:5039 tcp:5039

4

Решение

Задача ещё не решена.

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

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

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