Der Emacs-Client/die Bibliothek für das Debug-Adapter-Protokoll ist ein Drahtprotokoll für die Kommunikation zwischen Client und Debug-Server. Es ähnelt dem LSP, bietet jedoch eine Integration mit dem Debug-Server.
Die API galt bis zum Erscheinen der Version 1.0 als instabil. Es wird gegen Java, Python, Ruby, Elixir und LLDB (C/C++/Objective-C/Swift) getestet.
Die Haupteinstiegspunkte sind dap-debug
und dap-debug-edit-template
. Der erste fragt nach einer registrierten Debug-Vorlage und startet die Konfiguration mit den Standardwerten für diese bestimmte Konfiguration. Letzterer erstellt eine Debug-Vorlage, die vor der Ausführung angepasst werden kann. dap-debug-edit-template
bereitet eine Vorlagendeklaration in einem temporären Puffer vor. Sie sollten diesen Code mit CMx
ausführen, damit die Änderungen wirksam werden. Sie sollten diesen Code auch in Ihre Emacs-Konfiguration kopieren, wenn Sie ihn dauerhaft machen möchten.
dap-mode bietet auch eine Hydra mit dap-hydra
. Mit dem folgenden Code können Sie die Hydra automatisch auslösen, wenn das Programm einen Haltepunkt erreicht.
( add-hook 'dap-stopped-hook
( lambda ( arg ) ( call-interactively # 'dap-hydra )))
Sie können dieses Tool auch mit Docker-Debug-Servern verwenden: Konfigurieren Sie es entweder mit einer .dir-locals
Datei oder legen Sie eine .lsp-docker.yml
-Konfigurationsdatei ab (verwenden Sie lsp-docker als allgemeine Referenz). Im Grunde haben Sie eine Funktion dap-docker-register
, die die ganze schwere Arbeit übernimmt (die ursprüngliche Debug-Vorlage finden, sie patchen, einen Debug-Provider registrieren usw.). Diese Funktion untersucht eine Konfigurationsdatei oder greift auf die Standardkonfiguration zurück (die mit dem .dir-locals
Ansatz gepatcht werden kann; beachten Sie, dass die Standardkonfiguration keine vernünftigen Standardeinstellungen für das Debuggen bereitstellt) und arbeitet dann mit der Kombination aus die beiden. Dieser Mechanismus ist der gleiche wie in lsp-docker
.
Hinweis: Derzeit können Sie diesen Modus nicht verwenden, wenn Sie eine Netzwerkverbindung zum Herstellen einer Verbindung zu Debuggern verwenden (dieser Teil muss noch implementiert werden). Möchten Sie immer noch über das Netzwerk mit Debuggern sprechen? Um dies zu tun, müssen Sie sich die launch-args
Patches ansehen, die von dap-docker--dockerize-start-file-args
durchgeführt werden. Sie müssen dap-server-path
irgendwie nil
zuweisen, bevor es weiter in die Sitzungserstellung übernommen wird .
Wenn Sie bei einer Konfigurationsdatei bleiben möchten, sehen Sie sich das folgende Beispiel an:
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