aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/dot_config/nvim/lua/plugins/debug.lua
blob: 0d97713de5e8f56d6cd9662ba63ddcaa2848f0eb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
vim.keymap.set("n", "<leader>td", function()
  require("debugmaster").mode.toggle()
end, { desc = "[T]oggle [D]ebug mode" })

local dap = require("dap")

local function get_env_vars()
  local variables = vim.fn.environ()
  table.insert(variables, { ASAN_OPTIONS = "detect_leaks=0" })
  return variables
end

dap.adapters.lldb = {
  type = "executable",
  command = "lldb-dap",
  name = "lldb",
  env = get_env_vars,
}
dap.adapters.gdb = {
  type = "executable",
  command = "gdb",
  args = { "--interpreter=dap" },
  env = get_env_vars,
}

local function get_program()
  local _program
  vim.ui.input({
    prompt = "Program: ",
    complete = "file_in_path",
  }, function(res)
    _program = res
  end)
  return vim.fn.system("which " .. _program):gsub("\n$", "")
end

local function get_args()
  local _args
  vim.ui.input({
    prompt = "Args: ",
    default = vim.fn.getreg("+"),
    complete = "file",
  }, function(res)
    _args = res
  end)
  return require("dap.utils").splitstr(_args)
end

dap.configurations.cpp = {
  {
    name = "lldb-dap Launch",
    type = "lldb",
    request = "launch",
    cwd = "${workspaceFolder}",
    program = get_program,
    args = get_args,
    stopOnEntry = true,
    console = "integratedTerminal",
  },
}

dap.configurations.c = dap.configurations.cpp
dap.configurations.rust = dap.configurations.cpp

require("nvim-dap-virtual-text").setup({})