DAP(Debug Adapter Protocol)を試す

DAP(Debug Adapter Protocol)を試す。

github.com

Official page for Debug Adapter Protocolを見ながら、色々と試してみる。

LSPと同じようなものだと思われるので、とっつきは良かったのだが、 gdbとかlldbとか通常のデバッガのコマンドの対応が良くわからず苦労した。

Overview にあるシーケンス図に惑わされた感じ。

いくつかadapterを動かした感じだと、

1.adapter起動し、initializeを投げる

2.launch(やattach)コマンドで、実行ファイルを指定

3.breakpointの設定(setBreakpointsやserFunctionBreakpoints)

4.configurationDoneを投げると、実行ファイルが起動される(gdbのrunコマンド?)

5.breakpointとかで止まる(stoppedイベント)

公式ドキュメントの図だと、configurationDoneのあとで、launchしているように見えたので、 しばらく悩んでしまった。

stoppedイベントだと、止まった要因(breakpoint,step,exception,・・・)は分かるが、 具体的に止まった場所(どのファイルの何行目)は分からない。

stackTraceの応答を見れば良さそうなのだが、ちょっと面倒かも。

initializedイベントが送られるタイミングも最初、分からなかった。 initializeの後すぐに来るのかと思ったら、launchの後に来る。

initialized後がconfigurationの期間で、それが終わったらクライアントからconfigurationDoneを送れということか。