177 lines
5.2 KiB
Lua
177 lines
5.2 KiB
Lua
local dap = require('dap')
|
|
|
|
local codelldb_bin = "/usr/bin/codelldb"
|
|
|
|
-- Rust, C++, C
|
|
dap.adapters.codelldb = {
|
|
type = 'server',
|
|
port = "${port}",
|
|
executable = {
|
|
command = codelldb_bin,
|
|
args = { "--port", "${port}" },
|
|
}
|
|
}
|
|
|
|
local function get_default_rust_program_path()
|
|
local workspace = vim.fn.getcwd()
|
|
local program_name = vim.fn.fnamemodify(workspace, ":t")
|
|
return workspace .. '/target/debug/' .. program_name
|
|
end
|
|
|
|
dap.configurations.cpp = {
|
|
{
|
|
port = 1234,
|
|
host = '127.0.0.1',
|
|
name = "Attach to name",
|
|
type = "codelldb",
|
|
request = "attach",
|
|
pid = function()
|
|
-- Lets user enter the name of a running process instead of looking up the pid themselves
|
|
local name = vim.fn.input('Enter pidof name: ')
|
|
local handle = io.popen("pidof " .. name)
|
|
local pid = handle:read("*a")
|
|
handle:close()
|
|
|
|
-- Trim the result
|
|
pid = pid:match("^%s*(.-)%s*$")
|
|
return pid
|
|
end,
|
|
stopOnEntry = true,
|
|
},
|
|
{
|
|
port = 1234,
|
|
host = '127.0.0.1',
|
|
name = "Attach to PID",
|
|
type = "codelldb",
|
|
request = "attach",
|
|
pid = function()
|
|
return tonumber(vim.fn.input('Enter PID: '))
|
|
end,
|
|
stopOnEntry = true,
|
|
},
|
|
{
|
|
port = 1234,
|
|
host = '127.0.0.1',
|
|
name = "Manually launch file",
|
|
type = "codelldb",
|
|
request = "launch",
|
|
program = function()
|
|
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
|
|
end,
|
|
cwd = '${workspaceFolder}',
|
|
stopOnEntry = true,
|
|
},
|
|
{
|
|
-- To debug programs that need to run as root you can run a remote lldb-server as root
|
|
-- sudo lldb-server platform --server --listen '*:1234'
|
|
name = "Remote attach to name",
|
|
type = "codelldb",
|
|
request = "attach",
|
|
pid = function()
|
|
-- Lets user enter the name of a running process instead of looking up the pid themselves
|
|
local name = vim.fn.input('Enter pidof name: ')
|
|
local handle = io.popen("pidof " .. name)
|
|
local pid = handle:read("*a")
|
|
handle:close()
|
|
|
|
-- Trim the result
|
|
pid = pid:match("^%s*(.-)%s*$")
|
|
return pid
|
|
end,
|
|
initCommands = {
|
|
"platform select remote-linux",
|
|
"platform connect connect://127.0.0.1:1234",
|
|
"settings set target.inherit-env false",
|
|
},
|
|
},
|
|
{
|
|
-- To debug programs that need to run as root you can run a remote lldb-server as root
|
|
-- sudo lldb-server platform --server --listen '*:1234'
|
|
name = "Remote launch",
|
|
type = "codelldb",
|
|
request = "launch",
|
|
program = function()
|
|
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
|
|
end,
|
|
initCommands = {
|
|
"platform select remote-linux",
|
|
"platform connect connect://127.0.0.1:1234",
|
|
"settings set target.inherit-env false",
|
|
},
|
|
},
|
|
}
|
|
dap.configurations.c = dap.configurations.cpp
|
|
dap.configurations.rust = dap.configurations.cpp
|
|
|
|
-- Insert this config as a rust specific one before the C++ configs
|
|
table.insert(dap.configurations.rust, 1, {
|
|
port = 1234,
|
|
host = '127.0.0.1',
|
|
name = "Launch Default Rust Program",
|
|
type = "codelldb",
|
|
request = "launch",
|
|
program = get_default_rust_program_path,
|
|
cwd = '${workspaceFolder}',
|
|
stopOnEntry = true,
|
|
})
|
|
|
|
-- Python
|
|
--dap.adapters.python = function(cb, config)
|
|
-- if config.request == 'attach' then
|
|
-- ---@diagnostic disable-next-line: undefined-field
|
|
-- local port = (config.connect or config).port
|
|
-- ---@diagnostic disable-next-line: undefined-field
|
|
-- local host = (config.connect or config).host or '127.0.0.1'
|
|
-- cb({
|
|
-- type = 'server',
|
|
-- port = assert(port, '`connect.port` is required for a python `attach` configuration'),
|
|
-- host = host,
|
|
-- options = {
|
|
-- source_filetype = 'python',
|
|
-- },
|
|
-- })
|
|
-- else
|
|
-- local home = os.getenv("HOME")
|
|
-- cb({
|
|
-- type = 'executable',
|
|
-- -- You need to install debugpy in $HOME/.virtualenvs/
|
|
-- -- Like this:
|
|
-- -- $ mkdir .virtualenvs
|
|
-- -- $ cd .virtualenvs
|
|
-- -- $ python -m venv debugpy
|
|
-- -- $ debugpy/bin/python -m pip install debugpy
|
|
-- command = home .. '/.virtualenvs/debugpy/bin/python',
|
|
-- args = { '-m', 'debugpy.adapter' },
|
|
-- options = {
|
|
-- source_filetype = 'python',
|
|
-- },
|
|
-- })
|
|
-- end
|
|
--end
|
|
|
|
--dap.configurations.python = {
|
|
-- {
|
|
-- -- The first three options are required by nvim-dap
|
|
-- type = 'python'; -- the type here established the link to the adapter definition: `dap.adapters.python`
|
|
-- request = 'launch';
|
|
-- name = "Launch file";
|
|
--
|
|
-- -- Options below are for debugpy, see https://github.com/microsoft/debugpy/wiki/Debug-configuration-settings for supported options
|
|
--
|
|
-- program = "${file}"; -- This configuration will launch the current file if used.
|
|
-- pythonPath = function()
|
|
-- -- debugpy supports launching an application with a different interpreter then the one used to launch debugpy itself.
|
|
-- -- The code below looks for a `venv` or `.venv` folder in the current directly and uses the python within.
|
|
-- -- You could adapt this - to for example use the `VIRTUAL_ENV` environment variable.
|
|
-- local cwd = vim.fn.getcwd()
|
|
-- if vim.fn.executable(cwd .. '/venv/bin/python') == 1 then
|
|
-- return cwd .. '/venv/bin/python'
|
|
-- elseif vim.fn.executable(cwd .. '/.venv/bin/python') == 1 then
|
|
-- return cwd .. '/.venv/bin/python'
|
|
-- else
|
|
-- return '/usr/bin/python'
|
|
-- end
|
|
-- end;
|
|
-- },
|
|
--}
|