made windows nvim debugging work better with vscode

This commit is contained in:
Mitchell Hingley committed 2026-09-08 15:53:56 -04:00
1 parent d2485ea96b
commit 66942a1daa
2 files changed
+24 -12

No files matched your search

+9 -1
View File
@@ -44,7 +44,15 @@ if status_ok then
--vim.keymap.set("n", "<leader>cdc", dap.continue, { desc = "Debug: Start/Continue" }) --vim.keymap.set("n", "<leader>cdc", dap.continue, { desc = "Debug: Start/Continue" })
-- new start debug keymap in debugger.lua -- new start debug keymap in debugger.lua
vim.keymap.set("n", "<leader>cdi", dap.step_into, { desc = "Debug: Step Into" }) vim.keymap.set("n", "<leader>cdi", dap.step_into, { desc = "Debug: Step Into" })
vim.keymap.set("n", "<leader>cdo", dap.step_over, { desc = "Debug: Step Over" }) vim.keymap.set("n", "<leader>cdn", dap.step_over, { desc = "Debug: Step Over" })
vim.keymap.set("n", "<leader>cdO", dap.step_out, { desc = "Debug: Step Out" }) vim.keymap.set("n", "<leader>cdO", dap.step_out, { desc = "Debug: Step Out" })
vim.keymap.set("n", "<leader>cdt", dap.terminate, { desc = "Debug: Terminate" }) vim.keymap.set("n", "<leader>cdt", dap.terminate, { desc = "Debug: Terminate" })
vim.keymap.set("n", "<leader>cdr", dap.restart, { desc = "Debug: Restart" })
vim.keymap.set("n", "<leader>cdp", dap.pause, { desc = "Debug: Pause" })
vim.keymap.set("n", "<leader>cd[", dap.up, { desc = "Debug: Callstack up" })
vim.keymap.set("n", "<leader>cd]", dap.down, { desc = "Debug: Callstack down" })
vim.keymap.set("n", "<leader>cdh", function()
require("dap.ui.widgets").hover()
end, { desc = "DAP: Hover Variable Value" })
end end
+15 -11
View File
@@ -42,6 +42,7 @@ end
local function start_debug_session() local function start_debug_session()
local is_windows = vim.fn.has("win32") == 1
local dap = require("dap") local dap = require("dap")
-- 3. Platform-agnostic Launcher Configuration -- 3. Platform-agnostic Launcher Configuration
if not is_windows then if not is_windows then
@@ -57,9 +58,11 @@ local function start_debug_session()
}, },
} }
else else
local vscode = require('dap.ext.vscode')
local launch_json = vim.fn.getcwd() .. "/.vscode/launch.json" local launch_json = vim.fn.getcwd() .. "/.vscode/launch.json"
if vim.fn.filereadable(launch_json) == 1 then if vim.fn.filereadable(launch_json) == 1 then
dap.configurations.cpp = {} dap.configurations.cpp = {}
dap.configurations.c = {}
-- 1. CRUCIAL FIX: Alias the adapters directly so nvim-dap doesn't complain about a missing engine -- 1. CRUCIAL FIX: Alias the adapters directly so nvim-dap doesn't complain about a missing engine
--if dap.adapters.cppdbg then --if dap.adapters.cppdbg then
-- dap.adapters.cppvsdbg = dap.adapters.cppdbg -- dap.adapters.cppvsdbg = dap.adapters.cppdbg
@@ -67,11 +70,11 @@ local function start_debug_session()
-- dap.adapters.cppvsdbg = dap.adapters.codelldb -- dap.adapters.cppvsdbg = dap.adapters.codelldb
--end --end
-- 2. Map types inside launch.json to your C++ filetypes -- 2. Map types inside launch.json to your C++ filetypes
vscode.load_launchjs(nil, { vscode.type_to_filetypes = {
cppvsdbg = { "cpp", "c" }, cppvsdbg = { "cpp", "c" },
cppdbg = { "cpp", "c" }, cppdbg = { "cpp", "c" },
codelldb = { "cpp", "c" }, codelldb = { "cpp", "c" },
}) }
else else
-- No launch.json exists. Re-inject your FZF picker template rules -- No launch.json exists. Re-inject your FZF picker template rules
dap.configurations.cpp = { dap.configurations.cpp = {
@@ -123,7 +126,7 @@ return {
-- Automatically manage debugger installations via Mason -- Automatically manage debugger installations via Mason
require("mason-nvim-dap").setup({ require("mason-nvim-dap").setup({
ensure_installed = { "codelldb" }, -- Auto-installs CodeLLDB ensure_installed = { "codelldb", "cppdbg" }, -- Auto-installs CodeLLDB
automatic_installation = true, automatic_installation = true,
}) })
@@ -158,7 +161,7 @@ return {
executable = { executable = {
command = codelldb_path, command = codelldb_path,
args = {"--port", "${port}"}, args = {"--port", "${port}"},
detached = not is_windows, detached = false,
} }
} }
@@ -173,13 +176,13 @@ return {
} }
dap.adapters.cppvsdbg = { dap.adapters.cppvsdbg = {
id = "cppdbg", type = 'server',
type = "executable", port = "${port}",
command = cpptools_path, executable = {
-- For Windows subprocess tracking stability command = codelldb_path,
options = { args = {"--port", "${port}"},
detached = not is_windows, detached = false,
}, }
} }
-- 3. Platform-agnostic Launcher Configuration -- 3. Platform-agnostic Launcher Configuration
@@ -225,3 +228,4 @@ return {
end end
} }