Передумови
- Ви знаєте, як налаштовувати та конфігурувати плагіни neovim.
- Ви використовуєте UNIX-подібну ОС
Покрокова інструкція
- Встановіть наступні плагіни neovim
-- Приклад з packer.nvim
use("mfussenegger/nvim-dap")
use { "rcarriga/nvim-dap-ui", requires = {"mfussenegger/nvim-dap"} }
Встановіть vscode-lldb
- Завантажте файл, специфічний для вашої системи https://github.com/vadimcn/vscode-lldb/releases
- Розпакуйте його утилітою
unzip. У моєму випадку я розпакував у~/Sources/lldbРезультат виконанняunzip codelldb-x86_64-linux.vsixу~/Sources/lldb:
- Виконуваний файл codelldb доступний за шляхом:
~/Sources/lldb/extension/adapter
Налаштуйте nvim-dap у вашому
init.lua
local dap = require("dap")
dap.adapters.codelldb = {
type = 'server',
port = "${port}",
executable = {
-- Змініть це на ваш шлях!
command = '/home/kurotych/Sources/lldb/extension/adapter/codelldb',
args = {"--port", "${port}"},
}
}
dap.configurations.rust= {
{
name = "Launch file",
type = "codelldb",
request = "launch",
program = function()
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
end,
cwd = '${workspaceFolder}',
stopOnEntry = false,
},
}
require("dapui").setup({})
- Відкрийте будь-яку rust програму та виконайте в командному рядку neovim
:lua require("dap").toggle_breakpoint()там, де хочете зупинити програмуСкріншот

- Запустіть
:lua require("dap").continue()у командному рядку neovim для початку відладкиСкріншот

- Запустіть
:lua require("dapui").open()Ви можете переміщатися по вікнах відладки за допомогою миші. ВиконайтеСкріншот

:lua require("dapui").close()- щоб закрити всі вікна відладки
Гарячі клавіші
local dap = require('dap')
vim.keymap.set('n', '<F5>', function() dap.continue() end)
vim.keymap.set('n', '<F10>', function() dap.step_over() end)
vim.keymap.set('n', '<F11>', function() dap.step_into() end)
vim.keymap.set('n', '<F12>', function() dap.step_out() end)
vim.keymap.set('n', '<Leader>b', function() dap.toggle_breakpoint() end)
vim.keymap.set('n', '<Leader>dl', function() dap.run_last() end)
vim.keymap.set('n', '<Leader>df', function() require("dapui").float_element('scopes', { enter = true }) end)
Додаткова інформація
Ви можете знайти у репозиторіях плагінів nvim-dap та nvim-dap-ui
Скріншот dapui float_element
