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! 😁

相關文章
相關標籤/搜索