提问dap-mode for C, 我复制了VScode的launch.json到Eamcs的root下,dap-mode也能检测到,但是会报错

上面这张张图可以看到,运行了下面选择的配置后报了和.json有关的错误。 我不知道我是不是因为没有按照教程配置有关emacs的东西。 其中我还去油管看了这个老兄的dap视频,他说vscode的launch.json可以直接拿来用。 我实在是找不到是什么原因了,已经折腾了好久。

上面这个问题问完了。

第二个问题: 我也尝试了另一种方案,配置dap-debug-template luanch.json的内容配置了我的dap-debug-template. 可以看到会生成命令,但是会因为命令中路径没有被自动加上引号而报错。 这个我也找不到解决方案。

同时附上我在VScode中launch.json生成的控制台命令,对比message中的命令,可以看到区别是添加了引号。

附: VSCODE:生成的指令: PS A:\INSTALLED_FILES\Program Files (x86)\Emacs\Code> & ‘c:\Users\35498.vscode\extensions\ms-vscode.cpptools-1.3.0\debugAdapters\bin\WindowsDebugLauncher.exe’ ‘–stdin=Microsoft-MIEngine-In-jxtvkpy2.yjg’ ‘–stdout=Microsoft-MIEngine-Out-o30mwjol.nh1’ ‘–stderr=Microsoft-MIEngine-Error-5wtt1agp.qx4’ ‘–pid=Microsoft-MIEngine-Pid-02kd3oom.201’ ‘–dbgExe=C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin\gdb.exe’ ‘–interpreter=mi’

Emacs 中dap-debug根据dap-debug-template生成的指令: a:\INSTALLED_FILES\Program Files (x86)\Emacs.emacs.d.extension\vscode\cpptools\extension\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-zdqijvgf.yue --stdout=Microsoft-MIEngine-Out-kzasjylo.jfv --stderr=Microsoft-MIEngine-Error-u534d5u3.m45 --pid=Microsoft-MIEngine-Pid-5qgb1g2h.eyx --dbgExe=C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin\gdb.exe --interpreter=mi:

去给 dap-mode 提个 issue 吧,估计没人在 windows 上用

‘a:\INSTALLED_FILES\Program’ 不是内部或外部命令

这里路径首先就错了,路径被空格截断了。其中 INSTALLED_FILES 是个变量没展开?

另,相关项目/资源的链接不给,让别人看截图手打链接,帮你诊断问题?

感谢回复,不好意思~~,INSTALLED_FILES只是一个文件夹的名字,命令是启动 a:\INSTALLED_FILES\Program Files (x86)\ 路径下的.exe文件。咱们 都知道,这个命令中存在空格,输入进cmd会报错,所以需要添加引号。问题在于Emacs M-x dap-mode使用我的VScode的luanch.json配置出的命令 没有添加引号,所以想问有没有xdm遇到过这个问题。

另外附上我的dap-debug-template: (dap-register-debug-template “cpptools::Run Configuration” (list :name “cpptools::Run Configuration” :type “cppdbg” :request “launch” :program “${fileDirname}/${fileBasenameNoExtension}.exe” :args nil :cwd “${workspaceFolder}” :environment nil :MIMode “gdb” :miDebuggerPath “C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin\gdb.exe”))

[quote=“erick, post:5, topic:17050, full:true”] 感谢回复,不好意思~~,INSTALLED_FILES只是一个文件夹的名字,命令是启动 a:\INSTALLED_FILES\Program Files (x86)\ 路径下的.exe文件。咱们 都知道,这个命令中存在空格,输入进cmd会报错,所以需要添加引号。问题在于Emacs M-x dap-mode使用我的VScode的luanch.json配置出的命令 没有添加引号,所以想问有没有xdm遇到过这个问题。

另外附上我的dap-debug-template: (dap-register-debug-template “cpptools::Run Configuration” (list :name “cpptools::Run Configuration” :type “cppdbg” :request “launch” :program “${fileDirname}/${fileBasenameNoExtension}.exe” :args nil :cwd “${workspaceFolder}” :environment nil :MIMode “gdb” :miDebuggerPath “C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin\gdb.exe”))

想在中文社区先尝试一下嘿,dap-mode那里用win10的更少,tutorials里给的都是linux那样的 :grinning:

之前折腾过debug当前文件的,你可以参考一下。系统是 arch linux, windows没试过 https://github.com/archer-n/emacs.d/blob/archer’s/lisp/init-lsp.el#L23

谢谢~~,你这个template能够M-x dap-debug ,然后选择这个配置能成功debug嘛?我感觉参数有点少呀,顺便给你看下我的~~

dap-debug 可以的,我这个我只试过debug单文件的。 用dap-debug,需要在源码目录编译一个没有扩展名的文件,我给写成 archer/dap-debug-before-cc-compile-current-file函数来编译和调用dap-debug了。 image

谢谢老哥~~,我去dap-mode的github上提问啦,我暂时先用gdb手动调试算鸟!