🙆♀️
Rust 製 lsp server のデバッグ
rust 製 lsp server のデバッグに関する手順がなさそうだったので、備忘録も兼ねて書いておく。
vscode の Debugging に関しては こちら を参照。
また、lldb の vsocde プラグインは入れておく。( こちら )
- まず、client 側の ServerOptions.debug に rust コードをコンパイルしたバイナリファイルのパスを指定。(デフォルトであれば target/debug 配下)
以下に例を示す。
const debugExec = {
command: `${path.resolve(__dirname, '../../../target/debug/server')} start`,
options: { shell: true, detached: false },
};
const serverOptions: ServerOptions = { run: exec, debug: debugExec };
- 次に 下記コマンドで client を 立ち上げる。path は適当に指定する。
詳細は こちら を参照。
code \
--extensionDevelopmentPath=<EXTENSION-ROOT-PATH> \
--extensionTestsPath=<TEST-RUNNER-SCRIPT-PATH>
- ここで、.vscode/launch.json に debugger を serverプロセスにアタッチする設定を書く。
詳細は こちら を参照。
以下に例を示す。
{
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "attach",
"name": "Attach to Server",
"program": "${workspaceRoot}/target/debug/server",
}
]
}
- これを vscode の sidebar から実行すれば、適切に debugger が動作する。
おしまい。
Discussion