123 lines
3.6 KiB
Lua
123 lines
3.6 KiB
Lua
|
-- debug.lua
|
||
|
--
|
||
|
-- Shows how to use the DAP plugin to debug your code.
|
||
|
--
|
||
|
-- be extended to other languages as well. That's why it's called
|
||
|
-- kickstart.nvim and not kitchen-sink.nvim ;)
|
||
|
|
||
|
return {
|
||
|
-- NOTE: Yes, you can install new plugins here!
|
||
|
"mfussenegger/nvim-dap",
|
||
|
-- NOTE: And you can specify dependencies as well
|
||
|
dependencies = {
|
||
|
-- Creates a beautiful debugger UI
|
||
|
"rcarriga/nvim-dap-ui",
|
||
|
|
||
|
-- Required dependency for nvim-dap-ui
|
||
|
"nvim-neotest/nvim-nio",
|
||
|
|
||
|
-- Installs the debug adapters for you
|
||
|
"williamboman/mason.nvim",
|
||
|
"jay-babu/mason-nvim-dap.nvim",
|
||
|
|
||
|
-- Add your own debuggers here
|
||
|
},
|
||
|
config = function()
|
||
|
local dap = require("dap")
|
||
|
local dapui = require("dapui")
|
||
|
|
||
|
-- Dart / Flutter
|
||
|
dap.adapters.dart = {
|
||
|
type = "executable",
|
||
|
command = "dart",
|
||
|
args = { "debug_adapter" },
|
||
|
}
|
||
|
dap.adapters.flutter = {
|
||
|
type = "executable",
|
||
|
command = "flutter",
|
||
|
args = { "debug_adapter" },
|
||
|
}
|
||
|
dap.configurations.dart = {
|
||
|
{
|
||
|
type = "dart",
|
||
|
request = "launch",
|
||
|
name = "Launch dart",
|
||
|
dartSdkPath = "/opt/flutter/bin/cache/dart-sdk/bin/dart", -- ensure this is correct
|
||
|
flutterSdkPath = "/opt/flutter/bin/flutter", -- ensure this is correct
|
||
|
program = "${workspaceFolder}/lib/main.dart", -- ensure this is correct
|
||
|
cwd = "${workspaceFolder}",
|
||
|
},
|
||
|
{
|
||
|
type = "flutter",
|
||
|
request = "launch",
|
||
|
name = "Launch flutter",
|
||
|
dartSdkPath = "/opt/flutter/bin/cache/dart-sdk/bin/dart", -- ensure this is correct
|
||
|
flutterSdkPath = "/opt/flutter/bin/flutter", -- ensure this is correct
|
||
|
program = "${workspaceFolder}/lib/main.dart", -- ensure this is correct
|
||
|
cwd = "${workspaceFolder}",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
dap.adapters.gdb = {
|
||
|
type = "executable",
|
||
|
command = "gdb",
|
||
|
args = { "-i", "dap" },
|
||
|
}
|
||
|
dap.configurations.c = {
|
||
|
{
|
||
|
name = "Launch",
|
||
|
type = "gdb",
|
||
|
request = "launch",
|
||
|
program = function()
|
||
|
return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/a.out")
|
||
|
end,
|
||
|
cwd = "${workspaceFolder}",
|
||
|
stopAtBeginningOfMainSubprogram = false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
require("mason-nvim-dap").setup({
|
||
|
automatic_setup = true,
|
||
|
handlers = {},
|
||
|
ensure_installed = {
|
||
|
"dart-debug-adapter",
|
||
|
},
|
||
|
})
|
||
|
|
||
|
-- Basic debugging keymaps, feel free to change to your liking!
|
||
|
vim.keymap.set("n", "<F5>", dap.continue, { desc = "Debug: Start/Continue" })
|
||
|
vim.keymap.set("n", "<F1>", dap.step_into, { desc = "Debug: Step Into" })
|
||
|
vim.keymap.set("n", "<F2>", dap.step_over, { desc = "Debug: Step Over" })
|
||
|
vim.keymap.set("n", "<F3>", dap.step_out, { desc = "Debug: Step Out" })
|
||
|
vim.keymap.set("n", "<leader>db", dap.toggle_breakpoint, { desc = "Debug: Toggle Breakpoint" })
|
||
|
-- Dap UI setup
|
||
|
-- For more information, see |:help nvim-dap-ui|
|
||
|
dapui.setup({
|
||
|
-- Set icons to characters that are more likely to work in every terminal.
|
||
|
-- Feel free to remove or use ones that you like more! :)
|
||
|
-- Don't feel like these are good choices.
|
||
|
icons = { expanded = "▾", collapsed = "▸", current_frame = "*" },
|
||
|
controls = {
|
||
|
icons = {
|
||
|
pause = "⏸",
|
||
|
play = "▶",
|
||
|
step_into = "⏎",
|
||
|
step_over = "⏭",
|
||
|
step_out = "⏮",
|
||
|
step_back = "b",
|
||
|
run_last = "▶▶",
|
||
|
terminate = "⏹",
|
||
|
disconnect = "⏏",
|
||
|
},
|
||
|
},
|
||
|
})
|
||
|
|
||
|
-- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception.
|
||
|
vim.keymap.set("n", "<F7>", dapui.toggle, { desc = "Debug: See last session result." })
|
||
|
|
||
|
dap.listeners.after.event_initialized["dapui_config"] = dapui.open
|
||
|
dap.listeners.before.event_terminated["dapui_config"] = dapui.close
|
||
|
dap.listeners.before.event_exited["dapui_config"] = dapui.close
|
||
|
end,
|
||
|
}
|