Saltar al contenido

Depurar en Neovim

Existen muchos plugins diferentes que se pueden usar para depurar código de Rust en Neovim. Esta guía te mostrará cómo configurar nvim-dap y algunos plugins adicionales para depurar aplicaciones de Tauri.

La extensión nvim-dap requiere el binario codelldb. Descarga la versión para tu sistema desde https://github.com/vadimcn/codelldb/releases y descomprímela. Apuntaremos a ella más adelante en la configuración de nvim-dap.

Instala los plugins nvim-dap y nvim-dap-ui. Sigue las instrucciones proporcionadas en sus páginas de GitHub o simplemente usa tu gestor de plugins favorito. Ten en cuenta que nvim-dap-ui requiere el plugin nvim-nio.

A continuación, configura el plugin en tu configuración de Neovim:

init.lua
local dap = require("dap")
dap.adapters.codelldb = {
type = 'server',
port = "${port}",
executable = {
-- Change this to your path!
command = '/opt/codelldb/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() .. '/target/debug/', 'file')
end,
cwd = '${workspaceFolder}',
stopOnEntry = false
},
}

Esta configuración te pedirá que apuntes al binario de la aplicación Tauri que deseas depurar cada vez que inicies el depurador.

Opcionalmente, puedes configurar el plugin nvim-dap-ui para alternar la vista del depurador automáticamente cada vez que una sesión de depuración comience y se detenga:

init.lua
local dapui = require("dapui")
dapui.setup()
dap.listeners.before.attach.dapui_config = function()
dapui.open()
end
dap.listeners.before.launch.dapui_config = function()
dapui.open()
end
dap.listeners.before.event_terminated.dapui_config = function()
dapui.close()
end
dap.listeners.before.event_exited.dapui_config = function()
dapui.close()
end

Por último, puedes cambiar la forma predeterminada en que se muestran los puntos de interrupción en el editor:

init.lua
vim.fn.sign_define('DapBreakpoint',{ text ='🟥', texthl ='', linehl ='', numhl =''})
vim.fn.sign_define('DapStopped',{ text ='▶️', texthl ='', linehl ='', numhl =''})

Dado que no estamos usando la CLI de Tauri para iniciar la aplicación, el servidor de desarrollo no se iniciará automáticamente. Para controlar el estado del servidor de desarrollo desde Neovim puedes usar el plugin overseer.

La mejor manera de controlar las tareas que se ejecutan en segundo plano es utilizar la configuración de tareas al estilo VS Code. Para hacer esto, crea un archivo .vscode/tasks.json en el directorio del proyecto.

Puedes encontrar un ejemplo de configuración de tareas para un proyecto que usa trunk a continuación.

.vscode/tasks.json
{
"version": "2.0.0",
"tasks": [
{
"type": "process",
"label": "dev server",
"command": "trunk",
"args": ["serve"],
"isBackground": true,
"presentation": {
"revealProblems": "onProblem"
},
"problemMatcher": {
"pattern": {
"regexp": "^error:.*",
"file": 1,
"line": 2
},
"background": {
"activeOnStart": false,
"beginsPattern": ".*Rebuilding.*",
"endsPattern": ".*server listening at:.*"
}
}
}
]
}

A continuación puedes encontrar atajos de teclado de ejemplo para iniciar y controlar las sesiones de depuración.

init.lua
vim.keymap.set('n', '<F5>', function() dap.continue() end)
vim.keymap.set('n', '<F6>', function() dap.disconnect({ terminateDebuggee = true }) 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>o', function() overseer.toggle() end)
vim.keymap.set('n', '<Leader>R', function() overseer.run_template() end)

© 2026 Colaboradores de Tauri. CC-BY / MIT