用于调试适配器协议的 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