O cliente/biblioteca Emacs para Debug Adapter Protocol é um protocolo de conexão para comunicação entre o cliente e o Debug Server. É semelhante ao LSP, mas fornece integração com o servidor de depuração.
A API é considerada instável até o lançamento da versão 1.0. Ele é testado em Java, Python, Ruby, Elixir e LLDB (C/C++/Objective-C/Swift).
Os principais pontos de entrada são dap-debug
e dap-debug-edit-template
. O primeiro pede um modelo de depuração registrado e inicia a configuração usando os valores padrão para aquela configuração específica. Este último cria um modelo de depuração que pode ser personalizado antes da execução. dap-debug-edit-template
preparará uma declaração de modelo dentro de um buffer temporário. Você deve executar este código usando CMx
para que as alterações sejam aplicadas. Você também deve copiar este código na configuração do Emacs se desejar torná-lo persistente.
dap-mode também fornece uma hidra com dap-hydra
. Você pode acionar automaticamente a hidra quando o programa atingir um ponto de interrupção usando o código a seguir.
( add-hook 'dap-stopped-hook
( lambda ( arg ) ( call-interactively # 'dap-hydra )))
Você também pode usar esta ferramenta com servidores de depuração dockerizados: configure-a com um arquivo .dir-locals
ou elimine um arquivo de configuração .lsp-docker.yml
(use lsp-docker para referência geral). Basicamente, você tem uma função dap-docker-register
que executa todo o trabalho pesado (encontrar o modelo de depuração original, corrigi-lo, registrar um provedor de depuração, etc.). Esta função examina um arquivo de configuração ou retorna à configuração padrão (que pode ser corrigida usando a abordagem .dir-locals
, observe que a configuração padrão não fornece nenhum padrão sensato para depuração) e então opera na combinação de os dois. Este mecanismo é o mesmo do lsp-docker
.
Nota: atualmente você não pode usar este modo ao usar uma conexão de rede para conectar-se a depuradores (esta parte ainda não foi implementada). Ainda quer falar com depuradores pela rede? Para fazer isso, você deve observar o patch launch-args
feito por dap-docker--dockerize-start-file-args
, você deve de alguma forma atribuir nil
ao dap-server-path
antes de passar para a criação da sessão .
Se você quiser se limitar a um arquivo de configuração, dê uma olhada no exemplo abaixo:
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