我很难在iOS / Android上找到有关Rust调试故事的任何有用信息。我想我可以以某种方式使用相同的机制,允许远程调试C ++,但我不知道从哪里开始。
我的第一次尝试是使用JetBrains的Rust插件使用Android Studio,但似乎他们将此问题视为expected behavior。
我的下一步将是尝试绕过UI并直接通过lldb
/ gdb
设置断点,但我认为它是一个拐杖。
如何在Android / iOS上调试Rust代码?如果我能用一些UI来做这件事会很棒。
假设您在these steps之后在Android上构建并部署了Rust库。为了通过rust-gdb进行调试或使用CLion以图形方式进行调试,请执行以下操作:
packagingOptions.doNotStrip "**/*.so"
添加到app/build.gradle
来阻止gradle剥离您的Rust .so调试符号文件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"
~/Android/Sdk/platform-tools/adb root
~/Android/Sdk/platform-tools/adb forward tcp:1337 tcp:1337
~/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