web-dev-qa-db-ja.com

Rustの段階的な対話型デバッガー

どうすればデバッグできますかRustアプリケーションをステップバイステップで対話的に Rubyで "pry"でできるように?

ブレークポイントに到達したときに、リアルタイムで変数を確認し、できれば変更できるようにしたいです。生産準備完了プロジェクトはありますか?

42
user6324692

VS Code および CodeLLDB 拡張機能を使用すると、使いやすさが向上します。

  1. VSコードのインストール
  2. VS Code内から Rust(rls) を検索してインストールします
  3. LLDBのインストール
  4. VS Code内から CodeLLDB を検索してインストールします
  5. LLDBデバッガーは、デバッガーを開始できるメインメニュー項目「デバッグ」を追加しました。デバッグを初めて開始するときは、環境(デバッガー)を選択する必要があります。LLDBを選択します。
  6. LLDBを選択すると、launch.jsonファイルが開きます。そうでない場合は、.vscodeフォルダーの下にあります。
  7. launch.jsonは次のようになります。

    {
        // Use IntelliSense to learn about possible attributes.
        // Hover to view descriptions of existing attributes.
        // For more information, visit: https://go.Microsoft.com/fwlink/?linkid=830387
        "version": "0.2.0",
        "configurations": [
            {
                "type": "lldb",
                "request": "launch",
                "name": "Debug",
                "program": "${workspaceRoot}/target/debug/hello_world",
                "args": [],
                "cwd": "${workspaceRoot}/target/debug/",
                "sourceLanguages": ["Rust"]
            }
        ]
    }
    
  1. 物事を汎用的に保ち、貨物フォルダ名に一致するバイナリのみをコンパイルする場合は、「プログラム」キーの代わりに$ {workspaceRootFolderName}変数を使用できます。

    {
        "version": "0.2.0",
        "configurations": [
            {
                "type": "lldb",
                "request": "launch",
                "name": "Debug",
                "program": "${workspaceRoot}/target/debug/${workspaceRootFolderName}",
                "args": [],
                "cwd": "${workspaceRoot}/target/debug/",
                "sourceLanguages": ["Rust"]
            }
        ]
    }
    

RustおよびVS Codeについてのブログ投稿は次のとおりです。

23
Cirelli94

Rustコンパイラは、ネイティブデバッグ情報(シンボル)情報を含むネイティブバイナリを生成するため、すべてのネイティブデバッガが実行します。つまり、gdblldb、またはWindows RustのMSVC ABIバージョンを使用している場合は、デバッガー(WinDBGまたはVisual Studioのみ)。統合されたエクスペリエンスが必要な場合は、 RustDT が(Windowsでのセットアップ: 方法デバッグ用にGDBをセットアップするにはRust? )。 MSVC ABIのデバッグ中に変数値を検査するにはどうすればよいですか?) Rustプログラム? Windowsでは https://github.com/Rust-lang/Rust/issues/33062 Macでは。

18
cynic

グラフィカルデバッガには、 gdbgui があります。 Linux、Windows、MacOSで利用できます。ブラウザを表示として使用し、デバッガと対話します。

6
psiphi75

私はgdb 7.11を持っていますが、Rust-gdbコマンドは、gdbネイティブと比較してRust関連情報をより多く提供するようです。たとえば、Rust-gdbはRustオブジェクトを完全な名前で適切に表示しますが、gdbは単にそれらを表示しません。
次の例では、gdbはすべての太字部分で表示されます。

$ 1 = Args = {inner = ArgsOs = {inner = Args = {iter = IntoIter = {buf = NonNull = = {ポインタ= NonZero <* const std :: ffi :: os_str :: OsString> = {0x7ffff6c20060}}、ファントム= PhantomData、キャップ= 1、ptr = 0x7ffff6c20060、end = 0x7ffff6c20078}、_ dont_send_or_sync_me = PhantomData <* mut()>}}}

0
Otuk