🙆‍♀️

Rust 製 lsp server のデバッグ

2022/08/06に公開約1,200字

rust 製 lsp server のデバッグに関する手順がなさそうだったので、備忘録も兼ねて書いておく。

vscode の Debugging に関しては こちら を参照。

また、lldb の vsocde プラグインは入れておく。( こちら )

  1. まず、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 };
  1. 次に 下記コマンドで client を 立ち上げる。path は適当に指定する。
    詳細は こちら を参照。
code \
--extensionDevelopmentPath=<EXTENSION-ROOT-PATH> \
--extensionTestsPath=<TEST-RUNNER-SCRIPT-PATH>
  1. ここで、.vscode/launch.json に debugger を serverプロセスにアタッチする設定を書く。
    詳細は こちら を参照。
    以下に例を示す。
{
  "version": "0.2.0",
  "configurations": [
    {
		"type": "lldb",
		"request": "attach",
		"name": "Attach to Server",
		"program": "${workspaceRoot}/target/debug/server",
	}
  ]
}

  1. これを vscode の sidebar から実行すれば、適切に debugger が動作する。

おしまい。

Discussion

ログインするとコメントできます