在 VS Code 中調(diào)試 Rust:終極指南
在本教程中,您將學(xué)習(xí)如何使用 VS Code 調(diào)試 Rust??捎糜谑褂?VS Code 調(diào)試 Rust 的操作。設(shè)置 VS Code 來(lái)調(diào)試 Rust
Rust因其易用性、安全性和高性能而繼續(xù)保持其作為最受歡迎的編程語(yǔ)言的地位。隨著 Rust 的流行,許多新開(kāi)發(fā)人員第一次學(xué)習(xí) Rust。
在本地設(shè)置Rust開(kāi)發(fā)時(shí)的一項(xiàng)重要任務(wù)是選擇一個(gè)開(kāi)發(fā)環(huán)境,然后設(shè)置該環(huán)境來(lái)執(zhí)行您想要的操作。許多開(kāi)發(fā)人員選擇在Visual Studio Code中調(diào)試他們的代碼,因?yàn)樗敲赓M(fèi)的,并且在大多數(shù)硬件上使用起來(lái)感覺(jué)很敏捷。
讓我們看看如何在 Visual Studio Code 上設(shè)置 Rust 進(jìn)行調(diào)試!
內(nèi)容:
- 我們應(yīng)該用什么來(lái)調(diào)試 Rust 代碼?
- VS Code
- CLion
- JetBrains’ Fleet
- 可用于使用 VS Code 調(diào)試 Rust 的操作
- 在您的計(jì)算機(jī)上設(shè)置 Rust
- 創(chuàng)建我們的 Rust 項(xiàng)目
- 設(shè)置 VS Code 來(lái)調(diào)試 Rust
- 在 VS Code 中設(shè)置斷點(diǎn)
- 使用 VS Code 調(diào)試 Rust 的局限性
我們應(yīng)該用什么來(lái)調(diào)試 Rust 代碼?
在開(kāi)始編寫(xiě)代碼之前,我們有一個(gè)嚴(yán)肅的問(wèn)題需要回答,即我應(yīng)該使用什么 IDE?選擇 IDE 是非常主觀的,因此沒(méi)有人能真正說(shuō)一種工具絕對(duì)比另一種更好(如果他們這樣做了,他們可能會(huì)讓一些讀者寫(xiě)下相當(dāng)強(qiáng)烈的評(píng)論,爭(zhēng)論為什么他們的特定選擇比給定的建議更好。與其說(shuō)一種 IDE 客觀上比另一種更好,不如讓我們考慮三個(gè)可以選擇的好選項(xiàng)。
VScode
值得喜歡的事情: VS Code 受益于可跨各種平臺(tái)使用,因此無(wú)論您是在 Linux、Windows 還是 macOS 上進(jìn)行編碼,您始終能夠開(kāi)發(fā)和調(diào)試 Rust。
開(kāi)發(fā)體驗(yàn)也是一流的,因?yàn)閂S Code 的 Rust 插件會(huì)在您的 Rust 項(xiàng)目中使用rust-analyzer
。這意味著您可以在 VS Code 本身中獲得出色的代碼提示和建議。
它的價(jià)格也合適(免費(fèi)?。┎⑶倚阅芰己?。如果將 VS Code 與 CLion 等其他 IDE 進(jìn)行比較,您會(huì)發(fā)現(xiàn) VS Code 的表現(xiàn)出奇地好。而且,如果您已經(jīng)在開(kāi)發(fā)軟件,那么您很可能現(xiàn)在已經(jīng)將其安裝在計(jì)算機(jī)上。
需要考慮的事情: VS Code 比其他 IDE 輕得多,但需要注意的是,它并不是真正的 IDE(它更像是一個(gè)精美的文本編輯器),并且沒(méi)有其他功能更齊全的解決方案中的許多功能。它還缺乏在處理大型項(xiàng)目時(shí)非常重要的簡(jiǎn)單功能,例如能夠?qū)⑦x項(xiàng)卡撕到新窗口中。
因此,在處理單獨(dú)文件的同時(shí)查看其他文件變得相當(dāng)繁瑣。如果您是處理 Rust 項(xiàng)目的團(tuán)隊(duì)的一員,您也可能會(huì)從另一個(gè)具有更好 Git 集成的 IDE 中受益。
CLion
值得喜歡的事情: JetBrains 為 Rust 開(kāi)發(fā)提供了功能齊全的 IDE,與 rust-analyzer 完美集成,意味著一個(gè)使用起來(lái)令人愉悅的開(kāi)發(fā)環(huán)境。鑒于 JetBrains 在 Android Studio 和 IntelliJ IDEA 等領(lǐng)域擁有廣泛的工具,以前使用過(guò)其工具的人們將會(huì)欣賞 IDE 的類(lèi)似布局和可用性。
深思熟慮的添加,例如在文件中編寫(xiě)依賴(lài)項(xiàng)時(shí)為您提供可供選擇的軟件包版本cargo.toml
,這在很大程度上說(shuō)明了為什么這個(gè) IDE 非常適合用來(lái)開(kāi)發(fā) Rust 應(yīng)用程序。然后還有隨之而來(lái)的所有其他 IntelliJ 優(yōu)點(diǎn),比如良好的 Git 集成來(lái)管理提交和簽入新代碼。這使得 Rust 項(xiàng)目的團(tuán)隊(duì)工作變得更加容易。
**需要考慮的事情:**它不是免費(fèi)的。截至撰寫(xiě)本文時(shí),個(gè)人每年的費(fèi)用約為 99 美元。此外,擁有更多功能意味著有更多要求,CLion 比 VS Code 占用更多的 RAM 和系統(tǒng)資源。
JetBrains Fleet
值得喜歡的事情: Fleet是可用于處理 Rust 應(yīng)用程序的工具的新成員。它仍然由 JetBrains 開(kāi)發(fā),如果您已經(jīng)使用過(guò)他們的 IDE 之一,那么您的大部分知識(shí)將會(huì)繼續(xù)存在。更好的是,它感覺(jué)比 CLion 響應(yīng)更快,并且比 IntelliJ 系列中的其他 IDE 更少臃腫。雖然它處于測(cè)試階段(稍后會(huì)詳細(xì)介紹),但它也是免費(fèi)使用的,因此非常值得檢查許可費(fèi)用是否是一個(gè)限制。
**需要考慮的事情:**它還沒(méi)有真正發(fā)布——它仍然處于(相當(dāng)長(zhǎng)的)搶先體驗(yàn)計(jì)劃中。如果您只是將 Rust 作為一種愛(ài)好,那可能沒(méi)問(wèn)題。但是,如果您在日常工作中使用 Rust,您不會(huì)希望將所有希望都寄托在仍具有預(yù)發(fā)布質(zhì)量的 IDE 上。
還是拿不定主意嗎?查看VS Code 和其他 IDE 之間的深入比較以了解更多信息。對(duì)于本文,考慮到社區(qū)的廣泛使用以及它是免費(fèi)提供的事實(shí),我們將考慮如何在 VS Code 中調(diào)試 Rust 代碼。
可用于使用 VS Code 調(diào)試 Rust 的操作
當(dāng)您使用rust-analyzer
VS Code 擴(kuò)展時(shí),它提供了一系列代碼檢查功能,可幫助您編寫(xiě)更高質(zhì)量的代碼。例如,如果我們創(chuàng)建一個(gè)enum
但不使用它,VS Code 將顯示一條警告,表明該聲明enum
是多余的:
然后,如果我們getSimpleEnum
在main
函數(shù)中使用該函數(shù),rust-analyzer
如果我們尚未使用match
調(diào)用的所有結(jié)果,則會(huì)提示:
更好的是,來(lái)自的建議rust-analyzer
將自動(dòng)為我們生成我們的匹配警告:
rust-analyzer
VS Code 中還有更多可用功能。查看用戶(hù)手冊(cè)以了解全部?jī)?nèi)容。在我們的計(jì)算機(jī)上安裝了 VS Code 后,讓我們開(kāi)始設(shè)置 Rust。
在您的計(jì)算機(jī)上設(shè)置 Rust
在 macOS 或 Linux 上,安裝 Rust 就像在終端中輸入以下命令一樣簡(jiǎn)單:
$ curl --proto '=https' --tlsv1.3 https://sh.rustup.rs -sSf | sh
在 macOS 上,您還需要一個(gè) C 編譯器,您可以通過(guò)xcode-select --install
在終端中輸入來(lái)獲取它。如果您在 Windows 上安裝 Rust,設(shè)置會(huì)略有不同。您需要首先從網(wǎng)站檢索 Rust,然后安裝適用于 Windows 的構(gòu)建工具。這些是Visual Studio 2022的一部分,因此請(qǐng)確保安裝使用 C++ 工作負(fù)載的桌面開(kāi)發(fā)以及 Windows v10 或 v11 SDK。
完成所有這些后,您應(yīng)該在計(jì)算機(jī)上安裝 Rust CLI。您可以通過(guò)打開(kāi)命令窗口或終端并鍵入 來(lái)進(jìn)行檢查rustc --version
。輸出應(yīng)顯示您當(dāng)前安裝的 Rust 版本,如下所示:
創(chuàng)建我們的 Rust 項(xiàng)目
當(dāng)您仍在命令窗口中時(shí),導(dǎo)航到要在其中創(chuàng)建項(xiàng)目的目錄。然后,運(yùn)行cargo new rustdebugging
。rustdebugging
是本教程的項(xiàng)目名稱(chēng),但如果您愿意,可以將您的項(xiàng)目稱(chēng)為其他名稱(chēng)。大約一秒鐘后,您應(yīng)該會(huì)在窗口中看到此消息:
現(xiàn)在,通過(guò)輸入將目錄更改為我們的新項(xiàng)目cd rustdebugging
。然后,鍵入code .
將在該目錄中打開(kāi) VS Code。
設(shè)置 VS Code 來(lái)調(diào)試 Rust
當(dāng)我們第一次打開(kāi)項(xiàng)目時(shí),我們需要在出現(xiàn)提示時(shí)表明我們信任該項(xiàng)目。否則,我們將無(wú)法做任何事情:
接下來(lái),我們需要安裝rust-analyzer
. 這是在 VS Code 中編譯和調(diào)試 Rust 代碼不可或缺的一部分。導(dǎo)航到VS Code 中的EXTENSIONS: MARKETPLACE,然后找到并安裝該rust-analyzer
包,如下所示:
然后,我們可以從 VS Code 中打開(kāi)一個(gè)終端窗口并執(zhí)行cargo build
:
完成此操作后,我們的項(xiàng)目中應(yīng)該有一條新路徑target/debug/rustdebugging.exe
。
在 VS Code 中設(shè)置斷點(diǎn)
現(xiàn)在,打開(kāi)您的main.rs
文件,并觀察現(xiàn)有的"Hello, World!"
語(yǔ)句。如果我們單擊行號(hào)的左側(cè),我們可以為該特定行設(shè)置斷點(diǎn):
一旦我們?cè)O(shè)置了斷點(diǎn),該行上就會(huì)有一個(gè)紅色的小圓圈,如下所示:
如果我們敲擊**F5**
鍵盤(pán),就會(huì)出現(xiàn)一個(gè)新的控制臺(tái)窗口,并且我們的代碼應(yīng)該停在該行上。我們還應(yīng)該在 VS Code 中看到調(diào)試窗口,例如視圖Variable
和Call Stack
. 我們的"Hello, World!"
行以黃色突出顯示,表明這是執(zhí)行停止的行:
現(xiàn)在,讓我們通過(guò)將兩個(gè)數(shù)字相加來(lái)使代碼變得更復(fù)雜。將 的內(nèi)容替換main.rs
為以下內(nèi)容:
fn main() {
let applesThatJaneHas = 3;
let applesThatBobHas = 2;
println!("The total amount of apples that everyone has is {:?}", applesThatBobHas + applesThatJaneHas);
}
現(xiàn)在,如果我們?cè)谡{(diào)用上重新應(yīng)用斷點(diǎn)println
并按**F5**
,我們的代碼仍會(huì)停在該行。但是,我們可以看到 VS Code 的左側(cè)有局部變量視圖:
將 our 更新apple counts
為 avec
在調(diào)試器中也可見(jiàn):
甚至其他更復(fù)雜的類(lèi)型也HashMap
可以在局部變量視圖中得到很好的解釋?,F(xiàn)在,將代碼替換main.rs
為以下內(nèi)容:
use std::collections::HashMap;
fn main() {
let mut apple_map = HashMap::from([
("Red Delicious", 2),
("Kawana Apple", 5),
]);
println!("The total amount of apples that everyone has is {:?}", apple_map);
}
當(dāng)斷點(diǎn)被命中并且變量出現(xiàn)在視圖中時(shí),您就可以在 VS Code 中調(diào)試 Rust 程序了!
使用 VS Code 調(diào)試 Rust 的局限性
雖然 VS Code 是開(kāi)發(fā) Rust 項(xiàng)目的優(yōu)秀工具,但開(kāi)發(fā)人員應(yīng)該記住,它在技術(shù)上并不是一個(gè)完整的 IDE。雖然這可能是一件好事(例如,就 VS Code 的使用感覺(jué)而言),但這也意味著 VS Code 中可能不存在某些高級(jí)功能,或者可能必須通過(guò)擴(kuò)展來(lái)添加。
VS Code 的另一個(gè)可能的問(wèn)題是,與許多其他開(kāi)發(fā)工具不同,它無(wú)法將編輯器中的選項(xiàng)卡撕到新窗口中。此功能的問(wèn)題已經(jīng)存在相當(dāng)長(zhǎng)一段時(shí)間了,而且沒(méi)有跡象表明會(huì)很快發(fā)生變化。這不一定是一個(gè)大問(wèn)題,但對(duì)于許多習(xí)慣了此功能的開(kāi)發(fā)人員來(lái)說(shuō),它并不是當(dāng)今 VS Code 的一部分。
結(jié)論
現(xiàn)在,您已準(zhǔn)備好在 VS Code 中開(kāi)發(fā) Rust 項(xiàng)目。您可以借此機(jī)會(huì)在 VS Code 中安裝更多擴(kuò)展,以幫助您的開(kāi)發(fā)工作流程??纯聪旅娴囊恍┙ㄗh。
Rust 使用cargo.toml
文件來(lái)跟蹤依賴(lài)項(xiàng)和其他項(xiàng)目元數(shù)據(jù)。使用 Better TOML 擴(kuò)展可為您提供語(yǔ)法突出顯示和驗(yàn)證。您可以使用Crates檢查您的項(xiàng)目中是否使用的是最新的 crates。此擴(kuò)展有助于更新依賴(lài)項(xiàng),無(wú)論是一次一個(gè)還是一次全部。
要在 VS Code 中對(duì) Rust 項(xiàng)目進(jìn)行更高級(jí)的調(diào)試,請(qǐng)查看 CodeLLDB 擴(kuò)展。除其他功能外,此擴(kuò)展還允許您設(shè)置條件斷點(diǎn)。
如果您正在開(kāi)始使用 Rust,現(xiàn)在是參考官方 Rust 編程語(yǔ)言教程的絕佳時(shí)機(jī),例如如何編寫(xiě)猜謎游戲。這些教程對(duì) Rust 語(yǔ)言作為一個(gè)整體進(jìn)行了精彩的介紹,并將幫助您踏上成為 Rust 開(kāi)發(fā)人員的旅程。
設(shè)置好工作區(qū)后,無(wú)論您使用什么操作系統(tǒng),您都可以輕松地處理 Rust 項(xiàng)目??鞓?lè)編碼!文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-602478.html
更多Rust編程:https://www.jdon.com/tag-28556/文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-602478.html
到了這里,關(guān)于在VSCode中實(shí)現(xiàn)Rust編程調(diào)試指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!