-- 發表於十月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圖標:
框架
該插件將調用cargo test
以獲取帶有調試信息的未優化二進制文件,而後將其在調試器下啓動。函數
當咱們的測試達到第一個斷點時,「調試」窗口將自動彈出。它是圍繞堆棧跟蹤和線程組織的:咱們能夠從一個線程切換到另外一個線程(threads),而後上下移動框架(Frames)。工具
在右側,咱們具備當前範圍內的變量。咱們能夠經過在該窗格中鍵入右鍵來進行搜索,而後展開數據結構的子節點。
實際上,咱們沒必要在每一個步驟中都深刻「變量」窗格,由於這些值也與變量一塊兒內聯顯示:
在「調試」窗口的頂部,咱們有一些按步走的按鈕,例如Step Over(F8),Step Into(F7)和Force Step Into(在Windows / Linux上爲Shift + Alt + F7,在macOS上爲⇧⌥F7)。當咱們想進入一個源代碼不可訪問的函數時,後者頗有用。在這種狀況下,「強制進入」會直接跳至反彙編:
如今,咱們知道了如何逐步檢查變量,接下來讓咱們中止會話並查看設置。
咱們能夠選擇IntelliJ Rust將採用的調試器:
CLion的web幫助文檔中列出了支持的版本。
除了調試器自己,咱們還能夠切換在「變量」窗格中顯示Rust類型時將使用的渲染器:
無渲染器(No renderers):此選項禁用顯式渲染,僅本地保留GDB或LLDB提供的類型支持。因爲Rust類型格式化程序在當前狀態下在調試器中不可用,所以該選項意味着不會渲染不一樣於 C/C ++ 的類型。
Rust編譯器的渲染器(Rust compiler’s renderers):使用此選項,IntelliJ Rust從標準rustc發行版中獲取打印字體,並將其加載到調試器中。
捆綁的渲染器(Bundled renderers):該插件本身的渲染器是爲GDB和LLDB從頭實現的,統一了兩個調試器的類型表示。這些格式化程序爲strings,structs,enums和vectors構建樹狀視圖,使您能夠更輕鬆地查看子元素。
捆綁的渲染器也支持標準庫類型如:HashMap
,HashSet
,Rc
,Arc
,Cell
,Ref
等等。
讓咱們回到調試,可是此次咱們使用 run/debug 配置。
實際上,在較早的時候咱們從快捷菜單開始調試會話時,CLion建立了一個臨時的Cargo Command配置,咱們能夠在切換器中看到該配置爲灰色:
臨時配置具備完整的功能,可是一次只能配置有限數量的臨時配置。所以,若是使用快捷菜單調試許多目標和測試,則只有最後幾個相應的配置可用。您可使用Save…使它們永久化。
要基於同一模板建立另外一個配置,請轉到「編輯配置」,單擊"+",而後選擇「Cargo Command」。
在"Command"字段中使用如下模式: [run]
or[test]
[build options] [--] [program arguments]
注意 --
這個前綴後面跟着額外的空格。它分隔了 輸入參數 和 傳給Cargo的構建選項。
當咱們調試此配置時,插件會從調用 cargo build [build options]
啓動, 而後插件會啓動 調試 名爲[program arguments]
的二進制文件。
如今咱們會保存此配置。確認選擇了它並點擊 Debug(Ctrl+D
on Windows/Linux,⌃D
on macOS) 來啓動一個調試會話。
。。。