用於調試適配器協定的 Emacs 用戶端/庫是用於客戶端和調試伺服器之間通訊的有線協定。它與 LSP 類似,但提供與調試伺服器的整合。
在 1.0 版本發布之前,該 API 被認為不穩定。它針對 Java、Python、Ruby、Elixir 和 LLDB (C/C++/Objective-C/Swift) 進行了測試。
主要入口點是dap-debug
和dap-debug-edit-template
。第一個要求註冊的調試模板並使用該特定配置的預設值啟動配置。後者創建一個可以在運行之前自訂的調試模板。 dap-debug-edit-template
將在臨時緩衝區內準備模板宣告。您應該使用CMx
執行此程式碼才能套用變更。如果您希望使其持久化,您也應該將此程式碼複製到您的 Emacs 配置中。
dap-mode 也提供了 Hydra 和dap-hydra
。您可以使用下列程式碼在程式遇到斷點時自動觸發 Hydra。
( add-hook 'dap-stopped-hook
( lambda ( arg ) ( call-interactively # 'dap-hydra )))
您也可以將此工具與 dockerized 偵錯伺服器一起使用:使用.dir-locals
檔案設定它或刪除.lsp-docker.yml
設定檔(使用 lsp-docker 作為一般參考)。基本上,您有一個函數dap-docker-register
可以執行所有繁重的工作(查找原始偵錯模板、修補它、註冊偵錯提供者等)。此函數檢查設定檔或回退到預設設定(可以使用.dir-locals
方法進行修補,請注意,預設配置不提供任何用於偵錯的合理預設值),然後對以下組合進行操作兩個。此機制與lsp-docker
中的相同。
注意:目前使用網路連線連接偵錯器時無法使用此模式(該部分尚未實現)。還是想透過網路與調試器對話?為此,您必須查看dap-docker--dockerize-start-file-args
完成的launch-args
修補,您必須以某種方式將nil
分配給dap-server-path
然後再將其進一步傳遞到會話創建中。
如果您想堅持使用配置文件,請看下面的範例:
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