doomemacs/modules/tools/debugger
Gerry Agbobada 2cd8f85bac fix(debugger): fix dap-ui conditional loading
Probably missed when adding eglot support code in the module
2022-09-07 16:23:24 +02:00
..
autoload refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
config.el fix(debugger): fix dap-ui conditional loading 2022-09-07 16:23:24 +02:00
doctor.el refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
packages.el refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
README.org revert: fix(docs): set mode in file-local vars 2022-08-07 19:08:07 +02:00

:tools debugger

Description   unfold

Introduces a code debugger to Emacs, powered by realgud or dap-mode (LSP).

This document will help you to configure dap-mode Native Debug(GDB/LLDB) as there is still not enough documentation for it.

Maintainers

This module has no dedicated maintainers. Become a maintainer?

Module flags

+lsp
Enable support for Debug Adapter Protocol (DAP) debuggers.

TODO Hacks

🔨 This module's hacks haven't been documented yet. Document them?

TODO Changelog

This module does not have a changelog yet.

TODO Installation

🔨 This module's prerequisites documentation is incomplete. Complete it?

Enable this module in your doom! block.

Make sure all of these pre-requirements is in your $PATH:

  • nodejs
  • lldb and lldb-mi (optional)
  • gdb (optional), requires unzip

If you are getting an error like Searching for program no such file or directory "node", then you need nodejs (emacs-lsp/dap-mode#79).

Realgud debuggers

lldb and lldb-mi

This is optional if you want to debug with LLDB. Install lldb and lldb-mi.

gdb

This is optional if you want to debug with GDB. Install gdb.

You will need unzip for dap-gdb-lldb-setup. It downloads a VS-Code extension and it needs to extract compressed downloaded file.

You need this if you are having "wrong-type-argument stringp nil" error when calling dap-gdb-lldb-setup. See emacs-lsp/dap-mode#313

DAP debuggers

Python

DAP expects ptvsd by default as the Python debugger, but debugpy is recommended. See Configuration.

installing ptvsd:

pip3 install ptvsd --user

install debugpy:

pip3 install debugpy --user
;; in $DOOMDIR/config.el
(after! dap-mode
  (setq dap-python-debugger 'debugpy))

C, C++, Rust, Golang

Needs lldb-vscode. Install LLDB from your package manager.

Fedora:

dnf install lldb

TODO Usage

🔨 This module's usage documentation is incomplete. Complete it?

  • M-x +debugger/start
  • M-x +debugger/start-last
  • M-x +debugger/quit

Realgud

  1. Call dap-gdb-lldb-setup function.
  2. Use dap-debug-edit-template to configure debugging settings for your project. Available settings can be inspected here. Call eval-buffer to save your settings. Don't save the file!
  3. Call dap-debug, select a configuration and start debugging.

dap-mode with +lsp

Intuitive and powerful debugging.

  • Breakpoints
  • REPL
  • local variable view: Allows you to browse variables in the current stack frame.
  • expressions: Add expressions to either watch variables or generic expressions.

Keybindings

(map! :map dap-mode-map
      :leader
      :prefix ("d" . "dap")
      ;; basics
      :desc "dap next"          "n" #'dap-next
      :desc "dap step in"       "i" #'dap-step-in
      :desc "dap step out"      "o" #'dap-step-out
      :desc "dap continue"      "c" #'dap-continue
      :desc "dap hydra"         "h" #'dap-hydra
      :desc "dap debug restart" "r" #'dap-debug-restart
      :desc "dap debug"         "s" #'dap-debug

      ;; debug
      :prefix ("dd" . "Debug")
      :desc "dap debug recent"  "r" #'dap-debug-recent
      :desc "dap debug last"    "l" #'dap-debug-last

      ;; eval
      :prefix ("de" . "Eval")
      :desc "eval"                "e" #'dap-eval
      :desc "eval region"         "r" #'dap-eval-region
      :desc "eval thing at point" "s" #'dap-eval-thing-at-point
      :desc "add expression"      "a" #'dap-ui-expressions-add
      :desc "remove expression"   "d" #'dap-ui-expressions-remove

      :prefix ("db" . "Breakpoint")
      :desc "dap breakpoint toggle"      "b" #'dap-breakpoint-toggle
      :desc "dap breakpoint condition"   "c" #'dap-breakpoint-condition
      :desc "dap breakpoint hit count"   "h" #'dap-breakpoint-hit-condition
      :desc "dap breakpoint log message" "l" #'dap-breakpoint-log-message)

TODO Configuration

🔨 This module has no configuration documentation yet. Write some?

Troubleshooting

  • There is a known issue with the +debugger/start command, which is bound to SPC o d right now. It prints "No debugging session to quit" no matter what.

Frequently asked questions

This module has no FAQs yet. Ask one?

TODO Appendix

🔨 This module has no appendix yet. Write one?