在CLion中調試Rust代碼

-- 發表於十月9,2019經過瑪麗娜·卡拉什娜html

咱們將整個博客投入到IntelliJ Rust已有一段時間了。在本文中,咱們將仔細研究該CLion插件在調試Rust應用程序時須要作些什麼。git

首先,咱們將直接進入調試會話(debug session)以瞭解基礎知識,而後詳細探討調試器設置和其餘選項。github

若是你想獲得更多信息,請移步到rust插件的快速教程和CLion的web應用程序調試web

開始以前

首先,請確保您的項目已徹底加載。若是創建索引已經完成,而且Cargo工具窗口顯示了工做區的全部模塊和目標(all the modules and targets),那麼您就已徹底加載。windows

在Windows上, 進入到 設置|構建,執行,部署|工具鏈(Settings | Build, Execution, Deployment | Toolchain) 並將Cygwin或MinGW設置爲您的工做環境。而後,運行命令rustup toolchain list並檢查第一行:它應該是與調試器的位數相匹配的gnu版本之一。例如,若是您使用的是MinGW(32位),則默認工具鏈應爲i686-pc-windows-gnu。若是您使用的是MinGW64,則應爲x86_64-pc-windows-gnu。您能夠經過運行命令rustup default <toolchain_name>來設置適當的工具鏈。session

如何開始調試

若是咱們要調試無輸入參數的測試或目標,最快的方法是使用快捷菜單。數據結構

讓咱們選擇一個要調試的測試,在代碼中放置幾個​​斷點,而後單擊測試名稱旁邊的Debug圖標:
image框架

該插件將調用cargo test以獲取帶有調試信息的未優化二進制文件,而後將其在調試器下啓動。函數

當咱們的測試達到第一個斷點時,「調試」窗口將自動彈出。它是圍繞堆棧跟蹤和線程組織的:咱們能夠從一個線程切換到另外一個線程(threads),而後上下移動框架(Frames)。工具

在右側,咱們具備當前範圍內的變量。咱們能夠經過在該窗格中鍵入右鍵來進行搜索,而後展開數據結構的子節點。
image

實際上,咱們沒必要在每一個步驟中都深刻「變量」窗格,由於這些值也與變量一塊兒內聯顯示:
image

在「調試」窗口的頂部,咱們有一些按步走的按鈕,例如Step Over(F8),Step Into(F7)和Force Step Into(在Windows / Linux上爲Shift + Alt + F7,在macOS上爲⇧⌥F7)。當咱們想進入一個源代碼不可訪問的函數時,後者頗有用。在這種狀況下,「強制進入」會直接跳至反彙編:
image

如今,咱們知道了如何逐步檢查變量,接下來讓咱們中止會話並查看設置。

切換調試器和渲染器

咱們能夠選擇IntelliJ Rust將採用的調試器:

  • 在macOS和Linux上,選項是捆綁的LLDB(Bundled LLDB),捆綁的GDB(Bundled GDB)或自定義GDB二進制文件。
  • 在Windows上,咱們能夠在用於MinGW的捆綁GDB(Bundled GDB),Cygwin GDB(Bundled GDB)或自定義GDB之間進行選擇。

CLion的web幫助文檔中列出了支持的版本。
image

除了調試器自己,咱們還能夠切換在「變量」窗格中顯示Rust類型時將使用的渲染器:
image

無渲染器(No renderers):此選項禁用顯式渲染,僅本地保留GDB或LLDB提供的類型支持。因爲Rust類型格式化程序在當前狀態下在調試器中不可用,所以該選項意味着不會渲染不一樣於 C/C ++ 的類型。

Rust編譯器的渲染器(Rust compiler’s renderers):使用此選項,IntelliJ Rust從標準rustc發行版中獲取打印字體,並將其加載到調試器中。
image

捆綁的渲染器(Bundled renderers):該插件本身的渲染器是爲GDB和LLDB從頭實現的,統一了兩個調試器的類型表示。這些格式化程序爲strings,structs,enums和vectors構建樹狀視圖,使您能夠更輕鬆地查看子元素。
image

捆綁的渲染器也支持標準庫類型如:HashMap,HashSet,Rc,Arc,Cell,Ref等等。
image

調試一個Cargo命令的配置

讓咱們回到調試,可是此次咱們使用 run/debug 配置。

實際上,在較早的時候咱們從快捷菜單開始調試會話時,CLion建立了一個臨時的Cargo Command配置,咱們能夠在切換器中看到該配置爲灰色:
image

臨時配置具備完整的功能,可是一次只能配置有限數量的臨時配置。所以,若是使用快捷菜單調試許多目標和測試,則只有最後幾個相應的配置可用。您可使用Save…使它們永久化。

要基於同一模板建立另外一個配置,請轉到「編輯配置」,單擊"+",而後選擇「Cargo Command」。
image

在"Command"字段中使用如下模式:
[run]or[test] [build options] [--] [program arguments]

注意 -- 這個前綴後面跟着額外的空格。它分隔了 輸入參數 和 傳給Cargo的構建選項。

當咱們調試此配置時,插件會從調用 cargo build [build options] 啓動, 而後插件會啓動 調試 名爲[program arguments]的二進制文件。

如今咱們會保存此配置。確認選擇了它並點擊 Debug(Ctrl+Don Windows/Linux,⌃Don macOS) 來啓動一個調試會話。

更多調試功能

。。。

相關文章
相關標籤/搜索