dap-mode 点击运行按钮没有反应?

安装dap-mode 的配置如下:

(use-package dap-mode
  ;;:load-path "/Users/apple/.emacs.d/elpa/dap-mode-20220921.941"
  ;;:ensure t
  :after hydra lsp-mode
  ;; Uncomment the config below if you want all UI panes to be hidden by default!
  ;; :custom  lsp-mode won't configure dap-mode
 ;(lsp-enable-dap-auto-configure nil)
  ;; :config
  ;; (dap-ui-mode 1)
  :commands dap-debug
  :hook ((python-mode . dap-ui-mode) (python-mode . dap-mode))
  
  :custom
  (dap-auto-configure-mode t)
  
  :config
  (setq dap-auto-configure-features '(sessions locals controls tooltip))
  (dap-mode 1)
  (dap-ui-mode 1)
  ;; enables mouse hover support
  (dap-tooltip-mode 1)
  ;; use tooltips for mouse hover
  ;; if it is not enabled `dap-mode' will use the minibuffer.
  (tooltip-mode 1)
  ;; displays floating panel with debug buttons
  ;; requies emacs 26+
  (dap-ui-controls-mode 1)
  ;; Set up Node debugging
  (require 'dap-python)
  (setq dap-python-debugger 'debugpy)
  (require 'dap-ui)
  ;;(setq inhibit-eol-conversion t)
  ;;(require 'dap-node)
  ;;(dap-node-setup) ;; Automatically installs Node debug adapter if needed
;; (setq dap-auto-show-output t)
  (setq dap-output-window-max-height 50)
  (setq dap-output-window-min-height 50)
  ;;(setq dap-auto-configure-features '(locals))

  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;; (setq dap-ui-buffer-configurations                                                                                              ;;
  ;;       `((,"*dap-ui-locals*"  . ((side . right) (slot . 1) (window-width . 0.50))) ;; changed this to 0.50                       ;;
  ;;         (,"*dap-ui-repl*" . ((side . right) (slot . 1) (window-width . 0.50))) ;; added this! TODO enable when release on MELPA ;;
  ;;         (,"*dap-ui-expressions*" . ((side . right) (slot . 2) (window-width . 0.20)))                                           ;;
  ;;         (,"*dap-ui-sessions*" . ((side . right) (slot . 3) (window-width . 0.20)))                                              ;;
  ;;         (,"*dap-ui-breakpoints*" . ((side . left) (slot . 2) (window-width . , 0.20)))                                          ;;
  ;;         (,"*debug-window*" . ((side . bottom) (slot . 3) (window-width . 0.20)))))                                              ;;
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;Remove dap ui features
;;(remove-hook 'dap-mode-hook #'dap-tooltip-mode)
;;(remove-hook 'dap-ui-mode-hook #'dap-ui-controls-mode)
  (require 'dap-hydra)
 ;; (require 'dap-gdb-lldb)
  ;;(dap-gdb-lldb-setup)
  ;;:hydra
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;; (add-hook 'dap-stopped-hook                             ;;
  ;;        (lambda (arg) (call-interactively #'dap-hydra))) ;;
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

 )

进入dap-debug 后如下图:

按下面的按钮没有反应? image

同样遇到你的问题了,一样是 Python。

不是你的问题,最近 LSP 插件的 debug 功能出问题了。十一期间先是进入断点就报 treemacs 异常,后面异常修复后就是你现在这种情况,但是不能继续。

等等看吧,或许过两天就修复了,当然不加断点是可以正常运行的,多打 log 吧……

关注,一样的问题

其实emacs自带的python-mode和pdb的集成差不多也可以用了,能同步源代码窗口断点位置和当前stepping所在行,我觉得debugger到这个程度也差不多勉强能用了。至于dap好用的watch variable,显示stack frame之类的,pdb用起来麻烦一些,但是也就是敲几个命令的事情。习惯了的话也不是不能用。

你说的对,我在知道 dap-mode 之前就是在控制台使用 pdb 调试的,力扣刷题没什么问题,就是看变量的时候麻烦一些,对于我来说足够了。

但是对于用 Python 写业务项目来讲,我觉得 dap-mode 才是解决方案,直接使用 pdb 太原始了。另外,不清楚我是不是没理解到位,下面这段话能说明一下吗?或许可以让我脱离控制台在 Emacs 中调试。

额 就是 如果你在emacs里面M-x run python 然后遇到 pdb.set_trace 之类的地方,或者 M-x pdb 你的源代码的那个窗口对应的那一行会多一个小点点,提示你当前在这一行 然后每step一行,这个小箭头机会同步提示你现在step到哪一行乐

dap-mode 好像一直没有更新?

@book @CCTH @milanglacier 好消息,dap-mode 更新了,现在可以调试了,快去更新

:+1: :+1: :+1:已经更新的,问题已经解决!

:+1: :+1: :+1:, 谢谢周知

这个是不是必须依赖 lsp-mode?

可能是需要lsp-mode!

现在好像local 和 global变量窗口没有及时更新了, 点击step, 变量值会一直没更新,过一会儿再去点点展开和折叠会突然发现有更新了

现在是刷新两次才可以,感觉 Bug 还没修完,暂时先放出来一版可以用的。

再等等吧,如果有 8 月份那个版本,是可以直接用的。