Le client/bibliothèque Emacs pour Debug Adapter Protocol est un protocole filaire pour la communication entre le client et le serveur de débogage. Il est similaire au LSP mais fournit une intégration avec le serveur de débogage.
L'API est considérée comme instable jusqu'à la sortie de la version 1.0. Il est testé sur Java, Python, Ruby, Elixir et LLDB (C/C++/Objective-C/Swift).
Les principaux points d'entrée sont dap-debug
et dap-debug-edit-template
. Le premier demande un modèle de débogage enregistré et démarre la configuration en utilisant les valeurs par défaut pour cette configuration particulière. Ce dernier crée un modèle de débogage qui peut être personnalisé avant son exécution. dap-debug-edit-template
préparera une déclaration de modèle dans un tampon temporaire. Vous devez exécuter ce code à l'aide CMx
pour que les modifications s'appliquent. Vous devez également copier ce code dans votre configuration Emacs si vous souhaitez le rendre persistant.
dap-mode fournit également une hydre avec dap-hydra
. Vous pouvez déclencher automatiquement l'hydre lorsque le programme atteint un point d'arrêt en utilisant le code suivant.
( add-hook 'dap-stopped-hook
( lambda ( arg ) ( call-interactively # 'dap-hydra )))
Vous pouvez également utiliser cet outil avec des serveurs de débogage dockerisés : configurez-le soit avec un fichier .dir-locals
, soit déposez un fichier de configuration .lsp-docker.yml
(utilisez lsp-docker pour référence générale). Fondamentalement, vous disposez d'une fonction dap-docker-register
qui effectue tout le gros du travail (trouver le modèle de débogage d'origine, le corriger, enregistrer un fournisseur de débogage, etc.). Cette fonction examine un fichier de configuration ou revient à la configuration par défaut (qui peut être corrigée à l'aide de l'approche .dir-locals
, notez que la configuration par défaut ne fournit aucune valeur par défaut raisonnable pour le débogage), puis opère sur la combinaison de les deux. Ce mécanisme est le même que dans lsp-docker
.
Remarque : actuellement, vous ne pouvez pas utiliser ce mode lorsque vous utilisez une connexion réseau pour vous connecter aux débogueurs (cette partie n'a pas encore été implémentée). Vous souhaitez toujours parler aux débogueurs via le réseau ? Pour ce faire, vous devez examiner le correctif launch-args
effectué par dap-docker--dockerize-start-file-args
, vous devez d'une manière ou d'une autre attribuer nil
au dap-server-path
avant qu'il ne soit transmis plus loin dans la création de session. .
Si vous souhaitez vous en tenir à un fichier de configuration, jetez un œil à l'exemple ci-dessous :
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