Skip to content



Emacs client/library for Debug Adapter Protocol is a wire protocol for communication between client and Debug Server. It's similar to the LSP but provides integration with debug server.

Project status#

The API considered unstable until 1.0 release is out. It is tested against Java, Python, Ruby, Elixir and LLDB (C/C++/Objective-C/Swift).


The main entry points are dap-debug and dap-debug-edit-template. The first one asks for a registered debug template and starts the configuration using the default values for that particular configuration. The latter creates a debug template which could be customized before running. dap-debug-edit-template will prepare a template declaration inside a temporary buffer. You should execute this code using C-M-x for the changes to apply. You should also copy this code into your Emacs configuration if you wish to make it persistent.

dap-mode also provides a hydra with dap-hydra. You can automatically trigger the hydra when the program hits a breakpoint by using the following code.

(add-hook 'dap-stopped-hook
          (lambda (arg) (call-interactively #'dap-hydra)))



Extending DAP with new Debug servers#


  • Daniel Martin - LLDB integration.
  • Kien Nguyen - NodeJS debugger, Edge debuggers, automatic extension installation.
  • Aya Igarashi - Go debugger integration.
  • Nikita Bloshchanevich - launch.json support (+ variable expansion), debugpy support, (with some groundwork by yyoncho) runInTerminal support, various bug fixes.

Last update: June 12, 2022