Как отладить Rust на Android / iOS? - PullRequest
0 голосов
/ 13 февраля 2019

Мне было трудно найти какую-либо полезную информацию об истории отладки Rust на iOS / Android.Я предполагаю, что могу каким-то образом использовать тот же механизм, который позволяет удаленную отладку для C ++, но я не знаю, с чего начать.

Моей первой попыткой было использование Android Studio с плагином Rust от JetBrains, но, похоже,они видят эту проблему как ожидаемое поведение .

Следующим моим шагом будет попытка обойти пользовательский интерфейс и установить точки останова через lldb / gdb напрямую, но я вижу это как опору.

Как отладить код Rust на Android / iOS?Было бы отлично, если бы я мог сделать это с помощью некоторого интерфейса.

1 Ответ

0 голосов
/ 25 марта 2019

Допустим, вы создали и развернули библиотеку Rust на Android, выполнив эти шаги .Чтобы выполнить отладку с помощью rust-gdb или графически с помощью CLion, сделайте следующее:

  • Остановите gradle для удаления ваших файлов Rust .so с символами отладки, добавив packagingOptions.doNotStrip "**/*.so" к app/build.gradle

  • Переместите двоичный файл gdbserver из каталога prebuild Android NDK на устройство:

~/Android/Sdk/ndk-bundle/prebuilt/android-x86_64/gdbserver$ ~/Android/Sdk/platform-tools/adb push gdbserver /data/local/tmp
~/Android/Sdk/platform-tools/adb shell "chmod 777 /data/local/tmp/gdbserver"
  • Перезапустите adbd с правами root:
~/Android/Sdk/platform-tools/adb root
  • Переадресация порта, который вы будете использовать для gdbserver:
~/Android/Sdk/platform-tools/adb forward tcp:1337 tcp:1337
  • Присоедините gdbserver к процессу, который вы хотите отлаживать:
~/Android/Sdk/platform-tools/adb shell
generic_x86_64:/ # su
generic_x86_64:/ # set enforce 0
generic_x86_64:/ # /data/local/tmp/gdbserver :1337 --attach $(ps -A | grep your.android.application.id | awk '{print $2}')
  • Либо запустите rust-gdb, либо настройте конфигурацию CLion "Remote GDB" с помощью:
target remote tcp:localhost:1337
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...