android-studio串口调试工具源码_「iOS」iOS 调试 Rust

7cf9476018fb6c36789b88c4ea56087f.png

我们基于上次的文章尝试在 iOS 上 Debug Rust,iOS 编译和部署 Rust Library,而且我这里假设那篇文章中提到的工具你都已安装成功。

我们的 debug 项目仍然是上篇文章的 debug 项目,项目地址在 GitHub 上。

下载下来以后可以看到 basic 文件夹,里面有 ios 文件夹,打开 iOS 项目,运行。可以看到如下界面。

28fb857498c61c1362e1b755ab23dd4a.png

输入你的名字,点击 “Greet me!”,可以看到 Rust 代码 work 了。

81a8ea6d2d49f91ff2a1e3fe7c0de166.png

好,接下来,我们开始尝试直接 debug rust 项目。

我们先用 Clion 打开 rust 项目,项目地址在 basic/cargo 下。同时我们可以看到在 rust 编译产物文件夹 basic/cargo/target/ 中有很多不同平台的产物。我们是基于 iOS 模拟器调试的,所以我们关注的平台是 x86_64

68abdbcf39aa14c4a4c2122f4c56b080.png

我们先清空 target 这个文件夹,然后在 Clion 的 terminal 中键入 cargo lipo --targets x86_64-apple-ios,上篇文章中说了 lipo 是跨平台产物构建的利器,现在我们使用它来构建一个模拟器的产物。现在回车,我们可以看到 lipo 提示我们完成,并且说明了产物是 [unoptimized + debuginfo],意思产物构建时没有优化,并且产物带上了吗debuginfo。我们知道 LLVM 编译 release 包的时候会做一些优化,代码的位置相对于我们源码会有变化,那么这和我们 debug 是有冲突的,我们希望我们打的断点就在真实的源码位置,所以在 debug 产物,默认是把优化关闭了的。而且,我们源码和编译产物的映射是存在 debuginfo 中的,所以 Rust 帮我们带上了 debuginfo

cbb744511cc507ee3d8b9f25f660fe57.png

现在我们看到 target 文件夹如下。这个 x86_64 的产物就是我们模拟器需要的。

49f3f9deb20597d50a0ee07416a5fc15.png

现在我们再回到 iOS 项目处,重新编译,这个时候发现编译会失败。Xcode 说链接不到 Rust 产物。确实链接不到了,我们已经把原来的包删了。

3c29e717efa739519ca2c778a721c655.png

我们需要重新告诉 Xcode 如何链接我们的 Rust 库。我们把旧的链接给删除,然后添加我们新的带debuginfo 的包所在的 debug 路径。

04e0019d3542ccafb1f45bc1edbd19ba.png

好,现在我们重新运行,发现能运行成功了。OK,Stop Xcode 的运行。直接在模拟器启动刚才的 Greetings 应用。

我们现在去到 Clion,按图选择 Attach to Process。

266a856770f5fa2cfd703032ebad9641.png

此时会出现如下界面,键入我们的 APP 名称 Greetings。点选他。

a0b9ef72d20b022ffeea2f478c3b5c2a.png

然后可以看到 Clion attach 我们的应用成功。

b2d38e8f62d07ccc9d06c3bb0d2ce0f3.png

我们现在去到 Rust 代码中打一个断点。然后再去模拟器中输入自己名字,点击 “Greet me!”。发现断点已经命中了。

2e42911baa618f5d120605680580fccc.png

但是这还不够,因为等 APP 完全启动以后再开始 debug 这不能覆盖我们所有 debug场景,比如有很多 APP 一启动就要做的事情我们没法直接 debug。我会在下一篇文章和大家分享如何处理这种场景。敬请期待。

另外现在支持 Rust 项目 debug 的只有 Clion,所以安卓项目可能还需要等到 Rust 插件支持 Intellij 或者 Android Studio 的时候才可以支持真机调试。对了,官方进度在这里 GitHub。

7e051a7472959cf6796b2b6b82f41378.png

在 Xcode 中 debug Rust 请看 Xcode 调试 Rust。

Enjoy!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值