return { { 'mfussenegger/nvim-dap', config = function() vim.keymap.set('n', '', function() require('dap').continue() end) vim.keymap.set('n', '', function() require('dap').step_over() end) vim.keymap.set('n', '', function() require('dap').step_into() end) vim.keymap.set('n', '', function() require('dap').step_out() end) vim.keymap.set('n', 'b', function() require('dap').toggle_breakpoint() end) vim.keymap.set('n', 'B', function() require('dap').set_breakpoint() end) vim.keymap.set('n', 'lp', function() require('dap').set_breakpoint(nil, nil, vim.fn.input('Log point message: ')) end) vim.keymap.set('n', 'dr', function() require('dap').repl.open() end) vim.keymap.set('n', 'dl', function() require('dap').run_last() end) vim.keymap.set({'n', 'v'}, 'dh', function() require('dap.ui.widgets').hover() end) vim.keymap.set({'n', 'v'}, 'dp', function() require('dap.ui.widgets').preview() end) vim.keymap.set('n', 'df', function() local widgets = require('dap.ui.widgets') widgets.centered_float(widgets.frames) end) vim.keymap.set('n', 'ds', function() local widgets = require('dap.ui.widgets') widgets.centered_float(widgets.scopes) end) local dap = require("dap") dap.adapters.gdb = { type = "executable", command = "gdb", args = { "-i", "dap" } } dap.configurations.cpp = { { name = "Launch", type = "gdb", request = "launch", program = function() return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file') end, cwd = "${workspaceFolder}", stopAtBeginningOfMainSubprogram = false, }, } end }, { 'vim-vdebug/vdebug', config = function() vim.g.vdebug_options = { port = '9000' } end } }