如何在Android / iOS上调试Rust?

问题描述 投票:0回答:1

我很难在iOS / Android上找到有关Rust调试故事的任何有用信息。我想我可以以某种方式使用相同的机制,允许远程调试C ++,但我不知道从哪里开始。

我的第一次尝试是使用JetBrains的Rust插件使用Android Studio,但似乎他们将此问题视为expected behavior

我的下一步将是尝试绕过UI并直接通过lldb / gdb设置断点,但我认为它是一个拐杖。

如何在Android / iOS上调试Rust代码?如果我能用一些UI来做这件事会很棒。

android ios rust
1个回答
2
投票

假设您在these steps之后在Android上构建并部署了Rust库。为了通过rust-gdb进行调试或使用CLion以图形方式进行调试,请执行以下操作:

  • 通过将packagingOptions.doNotStrip "**/*.so"添加到app/build.gradle来阻止gradle剥离您的Rust .so调试符号文件
  • 将gdbserver二进制文件从Android NDK的prebuild目录推送到设备:
~/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"
  • 以root身份重新启动adbd:
~/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
© www.soinside.com 2019 - 2024. All rights reserved.