こんなの。
VSCodeの CodeLLDB プラグインと設定をちょいちょい書くことで実現できる。 私はこれを競プロ環境として使うつもりでいるが、これに限らず、実験コードをさくっと書いてその場で実行+デバッグしたいときに役立つ。
パスはお好みで書き換えよう。
VSCodeのデバッグ実行環境は launch.json
ファイルによって定義する。これは左メニューの虫アイコンをクリック後、デバッグメニューから "構成の追加..."
を選ぶと開く。
以下のような設定をする。
{
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug Run",
"sourceLanguages": [
"rust"
],
"terminal": "integrated",
"preLaunchTask": "Build single Rust file",
"program": "${workspaceRoot}/${fileBasenameNoExtension}",
"args": [],
"cwd": "${workspaceFolder}"
}
]
}
キーの意味は設定ファイルでマウスホバーすると教えてくれる。親切!特に重要なのは以下。
key | 意味 | 設定値 |
---|---|---|
terminal | プログラムの実行で使いたいターミナル。 | 競プロ的には標準入出力をしたいのでVSCodeのターミナルを指定 |
preLaunchTask | プログラム実行前に走らせたいタスク | この名前のタスクをあとで定義 |
program | デバッグ実行したいプログラムへのパスを指定 | タスクで作った実行可能ファイルへのパス |
args | programに渡す引数をスペースでsplitした配列で指定 | なし |
cwd | 実行プログラムのワーキングディレクトリ | 競プロ的にはどうでも良し |
ここでは、プログラム実行前のタスク(preLaunchTask)として、単一Rustファイルのコンパイルを指定している。これは別途タスクとして定義する必要がある。
先程 "preLaunchTask"
に指定した、Build single Rust file
を定義する。
「タスク」->「タスクの構成...」 でメニューが出てくる。適当なのを選ぶと tasks.json
が開くので、これに以下の記述をする。
{
"version": "2.0.0",
"tasks": [
{
"label": "Build single Rust file",
"type": "shell",
"command": "rustc",
"args": [
"-o",
"${workspaceRoot}/${fileBasenameNoExtension}",
"-C",
"debug_assertions=yes",
"-g",
"${file}"
],
"group": "build",
"presentation": {
"reveal": "always"
}
}
]
}
これは「今開いているファイル」をデバッグ情報付きでコンパイルするタスクである。
ちなみに説明が前後するが、VSCodeの構成ファイルは「今開いているファイル」「ワークスペースのパス」等を表す変数が利用できる。一覧は Variables Reference にある。
これでさくさくデバッグできてハッピー