07 Dap for Rust
1 Environment
- OS: MacOS
- Neovim: 0.9.5
- Rust: 1.76.0
- Neovim framework: Astronvim
2 Install the associated plugin for rust dap
~/.config/nvim/lua/user/plugins/mason.lua
-- ... Other code above ...
{
"jay-babu/mason-nvim-dap.nvim",
opts = function(_, opts)
opts.ensure_installed = require("astronvim.utils").list_insert_unique(
opts.ensure_installed,
{
"codelldb",
"cpptools",
}
)
end,
},
3 Install system dependencies
$ brew install llvm
$ ln -s $(brew --prefix)/opt/llvm/bin/lldb-vscode $(brew --prefix)/bin/ # <-- Link the lldb-vscode to the bin directory
$ brew install codelldb
4 To use the dap config from the project
~/.config/nvim/lua/user/plugins/dap-projects.lua
return {
{
"ldelossa/nvim-dap-projects",
},
}
~/.config/nvim/lua/user/init.lua
return {
-- ... Other code above ...
polish = function()
require("nvim-dap-projects").search_project_config()
end,
}
and then, reopen the project, and the pluginldelossa/nvim-dap-projects
will be installed automatically.
5 Setup a project configuration file
5.1 Initialize a project name hello-world
$ cargo new hello-world
$ cd hello-world
5.2 Add a new dap
config file in the project root directory
.nvim/nvim-dap.lua
local dap = require("dap")
dap.adapters.codelldb = {
type = "server",
port = "${port}",
executable = {
command = os.getenv("XDG_DATA_HOME") .. "/nvim/mason/bin/codelldb",
args = { "--port", "${port}" },
},
}
dap.configurations.rust = {
{
name = "Launch file",
type = "codelldb",
request = "launch",
program = function()
vim.fn.system("cargo build")
return vim.fn.getcwd() .. "/target/debug/hello-world"
end,
cwd = "${workspaceFolder}",
stopOnEntry = false,
},
}
6 Start the debug
Open the hello-world
project,and add the breakpoint in the src/main.rs
file, and then press the <leader>dc
to start the debug. the flowing dap pane will be trigger in vim, like: