使用Mason.nvim配置Neovim的nvim-dap调试C++时遇退出码-1求助
nvim-dap无法在Neovim环境中正常工作,启动调试后始终以退出码-1终止。已在多个可正常运行的程序上测试,程序本身无调试问题;终端中单独运行lldb正常,排除权限问题。希望通过mason-nvim-dap提升配置可移植性,当前相关配置如下:
插件安装配置
-- DAP Installs { "rcarriga/nvim-dap-ui", event = "VeryLazy", dependencies = "mfussenegger/nvim-dap", config = function() local dap = require("dap") local dapui = require("dapui") dapui.setup() dap.listeners.after.event_initialized["dapui_config"] = function() dapui.open() end -- dap.listeners.before.event_terminated["dapui_config"] = function() -- dapui.close() -- end -- dap.listeners.before.event_exited["dapui_config"] = function() -- dapui.close() -- end end }, { "jay-babu/mason-nvim-dap.nvim", event = "VeryLazy", dependencies = { "williamboman/mason.nvim", "mfussenegger/nvim-dap", }, opts = { handlers = {} }, }, { "mfussenegger/nvim-dap", vim.keymap.set('n', '<leader>Dc', ':lua require"dap".continue()<CR>', {desc = '[d]ebug [c]ontinue'}), },
DAP核心配置
-- DAP config require("mason").setup() require("mason-nvim-dap").setup({ ensure_installed = {'codelldb'}, automatic_installation = true, })
调试输出信息
DAP-REPL控制台:
Console is in 'commands' mode, prefix expressions with '?'.
Launching: /Users/myname/Documents/code/400hw/ec3
Launched process 15338
Process exited with code -1.DAP终端:
[Process Exited 0]
1. 补充codelldb调试适配器与语言配置
mason-nvim-dap默认会注册codelldb适配器,但空handlers可能导致配置未生效。在DAP配置中添加以下代码,明确适配器路径与C/C++调试启动项:local dap = require("dap") -- 配置codelldb适配器 dap.adapters.codelldb = { type = 'server', port = "${port}", executable = { command = vim.fn.stdpath("data") .. "/mason/packages/codelldb/extension/adapter/codelldb", args = {"--port", "${port}"}, } } -- 配置C/C++调试启动规则 dap.configurations.cpp = { { name = "Launch file", type = "codelldb", request = "launch", program = function() return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file') end, cwd = '${workspaceFolder}', stopOnEntry = false, }, } -- 让C语言复用C++的调试配置 dap.configurations.c = dap.configurations.cpp2. 确保编译时添加调试符号
编译程序必须加上-g参数生成带调试信息的可执行文件,否则调试器无法附着。示例编译命令:gcc -g your_program.c -o your_program3. 验证codelldb安装状态
运行:Mason命令,确认codelldb已成功安装。若安装失败,手动触发重新安装,或检查网络连接状态。4. 恢复DAP-UI的退出监听
取消注释关闭UI的监听代码,避免UI状态异常干扰调试流程:dap.listeners.before.event_terminated["dapui_config"] = function() dapui.close() end dap.listeners.before.event_exited["dapui_config"] = function() dapui.close() end5. 检查codelldb可执行路径有效性
手动执行以下命令,确认codelldb可正常启动:~/.local/share/nvim/mason/packages/codelldb/extension/adapter/codelldb --version若路径不存在,说明mason安装失败,需重新安装codelldb。
内容的提问来源于stack exchange,提问作者justatoaster47

