Xcode 调试 Rust

上一篇文章我分享了如何在 iOS 平台调试 Rust,可是必须先把咱们的 APP 启动起来才能够用 Clion Attach 咱们的 APP,可是这种方式无法覆盖那些 APP 一启动就须要添加断点的调试场景,比方说 init 方法。此次我分享如何调试这些场景。html

这里我假设上篇文章分享的 debug 方式你已经掌握,由于从我我的实践来看,在 iOS 平台上,这两种调试 Rust 的方式都是用获得的。git

咱们首先要思考一个问题,要 APP 一运行就能调试,那咱们只能在 Xcode 作这件事情,这是绕不开的,或者你是 AppCode 用户,可是本质是同样的。因此咱们必需要让 Xcode 支持 Rust 断点。好在前人已经帮咱们作了。执行下面的脚本就能给 Xcode 安装好 Rust 断点工具。若是由于 Xcode 版本问题致使无效,你能够查看这里: github.com/newyjp/rust…github

#!/bin/bash
 # Asking sudo
if [ $EUID != 0 ]; then
    sudo "$0" "$@"
    exit $?
fi

rm -r /tmp/rust-xcode-plugin
git clone https://github.com/newyjp/rust-xcode-plugin /tmp/rust-xcode-plugin
sudo cp -r /tmp/rust-xcode-plugin/Plug-ins/Rust.ideplugin ~/Library/Developer/Xcode/Plug-ins
sudo cp -r /tmp/rust-xcode-plugin/Specifications/* ~/Library/Developer/Xcode/Specifications
rm -r /tmp/rust-xcode-plugin
复制代码

而后重启 Xcode,会弹出一个选框,注意要选择 load bundle,不要选择 skip bundle。shell

注意,咱们 iOS 的 debug 项目保持 iOS 调试 Rust 调试完的状态。 仍然打开咱们在上一篇文章中的 demo 项目。和在 Clion 中 debug Rust 同样,咱们仍尝试在 rust_greeting 函数的入口处打一个断点。就像下面这样。xcode

咱们先在 iOS debug 项目的 didFinishLaunchingWithOptions 方法中打一个断点,而后 Command + R 运行 iOS debug 项目。bash

而后在 Clion 中拷贝我要添加 breakPoint 的文件的位置。app

咱们添加 breakPoint 的语法是:b file.rs:line-number,而后回车执行。如今我在 Xcode 控制台中添加一个 breakPoint。我执行的命令是 b /Users/newpan/Desktop/cross-platform-rust-master/basic/cargo/src/lib.rs:10,命令成功之后,控制台会输出 breakPoint 名称等信息。ide

而后放开以前的断点。咱们在模拟器里输入本身的名字,而后点击 Greet me!函数

能够看到咱们的程序稳稳地停在了 lib.rs 这个文件的第 10 行。工具

接下来,咱们就能够像平时调试同样,在方法中随意添加 breakPoint 进行调试。

咱们甚至能够用 frame variable 打出整个 frame 中的全部变量的值,也能够 po 出具体某个变量的值。

咱们也能够删除以前添加的断点。语法为 br del breakPoint-ID

更多的 LLDB 语法参见 LLDB CookBook 的 「Breakpoint Commands」 章节 developer.apple.com/library/arc…

Enjoy! 😁

相关文章
相关标签/搜索