デバッグアダプタープロトコル用の Emacs クライアント/ライブラリは、クライアントとデバッグサーバー間の通信用のワイヤープロトコルです。これは LSP に似ていますが、デバッグ サーバーとの統合を提供します。
この API は、1.0 リリースがリリースされるまで不安定であると考えられています。 Java、Python、Ruby、Elixir、LLDB (C/C++/Objective-C/Swift) に対してテストされています。
主要なエントリ ポイントはdap-debug
とdap-debug-edit-template
です。最初のコマンドは、登録されたデバッグ テンプレートを要求し、その特定の構成のデフォルト値を使用して構成を開始します。後者は、実行前にカスタマイズできるデバッグ テンプレートを作成します。 dap-debug-edit-template
一時バッファー内にテンプレート宣言を準備します。変更を適用するには、 CMx
使用してこのコードを実行する必要があります。永続的にしたい場合は、このコードを Emacs 設定にコピーする必要もあります。
dap-mode は、 dap-hydra
を備えた hydra も提供します。次のコードを使用すると、プログラムがブレークポイントに到達したときに hydra を自動的にトリガーできます。
( add-hook 'dap-stopped-hook
( lambda ( arg ) ( call-interactively # 'dap-hydra )))
このツールは Docker 化されたデバッグ サーバーでも使用できます。.dir .dir-locals
ファイルを使用して構成するか、 .lsp-docker.yml
構成ファイルをドロップします (一般的な参照には lsp-docker を使用します)。基本的に、すべての面倒な作業 (元のデバッグ テンプレートの検索、パッチの適用、デバッグ プロバイダーの登録など) を実行する 1 つの関数dap-docker-register
あります。この関数は、構成ファイルを検査するか、デフォルト構成 ( .dir-locals
アプローチを使用してパッチを適用できます。デフォルト構成ではデバッグ用の適切なデフォルトが提供されないことに注意してください) にフォールバックし、次の組み合わせで動作します。二人。このメカニズムはlsp-docker
と同じです。
注: 現在、ネットワーク接続を使用してデバッガーに接続する場合は、このモードを使用できません (この部分はまだ実装されていません)。それでもネットワーク経由でデバッガと通信したいですか?そのためにはdap-docker--dockerize-start-file-args
によって実行されるlaunch-args
パッチを確認する必要があります。セッション作成に渡される前に、何らかの方法でdap-server-path
にnil
を割り当てる必要があります。 。
設定ファイルにこだわりたい場合は、以下の例を見てください。
lsp :
server :
# 'lsp-docker' fields
mappings :
- source : " /your/host/source/path " # used both by 'lsp-docker' and 'dap-docker'
destination : " /your/local/path/inside/a/container " # used both by 'lsp-docker' and 'dap-docker'
debug :
type : docker # only docker is supported
subtype : image # or 'container'
name : <docker image or container that has the debugger in> # you can omit this field
# in this case the 'lsp-docker' ('server' section) image name is used
enabled : true # you can explicitly disable 'dap-docker' by using 'false'
provider : <your default language debug provider, double quoted string>
template : <your default language debug template, double quoted string>
launch_command : <an explicit command if you want to override a default one provided by the debug provider>
# e.g. if you have installed a debug server in a different directory, not used with 'container' subtype debuggers