diff --git a/debugger.lua b/debugger.lua new file mode 100644 index 0000000..962472c --- /dev/null +++ b/debugger.lua @@ -0,0 +1,61 @@ +local dap = require("dap") + +dap.adapters.gdb = { + id = 'gdb', + type = 'executable', + command = 'gdb', + args = { '--quiet', '--interpreter=dap' }, +} + +dap.adapters.gdb = { + id = 'gdb', + type = 'executable', + command = 'gdb', + args = { '--quiet', '--interpreter=dap' }, +} + +dap.configurations.c = { + { + name = 'Run executable (GDB)', + type = 'gdb', + request = 'launch', + -- This requires special handling of 'run_last', see + -- https://github.com/mfussenegger/nvim-dap/issues/1025#issuecomment-1695852355 + program = function() + local path = vim.fn.input({ + prompt = 'Path to executable: ', + default = vim.fn.getcwd() .. '/', + completion = 'file', + }) + + return (path and path ~= '') and path or dap.ABORT + end, + }, + { + name = 'Run executable with arguments (GDB)', + type = 'gdb', + request = 'launch', + -- This requires special handling of 'run_last', see + -- https://github.com/mfussenegger/nvim-dap/issues/1025#issuecomment-1695852355 + program = function() + local path = vim.fn.input({ + prompt = 'Path to executable: ', + default = vim.fn.getcwd() .. '/', + completion = 'file', + }) + + return (path and path ~= '') and path or dap.ABORT + end, + args = function() + local args_str = vim.fn.input({ + prompt = 'Arguments: ', + }) + return vim.split(args_str, ' +') + end, + }, + { + name = 'Attach to process (GDB)', + type = 'gdb', + request = 'attach', + processId = require('dap.utils').pick_process, + }, diff --git a/init.lua b/init.lua index 39a4735..7bad64e 100644 --- a/init.lua +++ b/init.lua @@ -413,3 +413,4 @@ require('neotest').setup { require("lsp-inlayhints").setup() require("completion") require("rust") +require("debugger")