-
-
Notifications
You must be signed in to change notification settings - Fork 35
DAP support rust
Zeioth edited this page Aug 15, 2023
·
13 revisions
In order to debug your programs, you have to compile them in debug mode as described next
Create a .solution.toml
file in your working directory. Then pass the -g
argument to the compiler like this
[HelloWorld]
entry_point = "/path/to/my/entry_point_file/main.rs"
output = "/path/where/the/program/will/be/written/hello_world"
arguments = "-g"
That will tell the compiler to compile in debug mode.
Please note that this section has nothing to do with compiler.nvim. I'm documenting this to make your life easier. To debug Rust with DAP you have to:
- Install the
codelldb
adapter usingmason-dap
. - Setup
DAP
for rust
Here you have an example of how to configure DAP for rust
local dap = require("dap")
-- Rust
dap.adapters.codelldb = {
type = 'server',
port = "${port}",
executable = {
command = vim.fn.stdpath('data')..'/mason/bin/codelldb',
args = {"--port", "${port}"},
detached = function() if vim.fn.has('win32') == 1 then return false else return true end end,
}
}
dap.configurations.rust = {
{
name = 'Launch',
type = 'lldb',
request = 'launch',
program = function() -- Ask the user what executable wants to debug
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/bin/program', 'file')
end,
cwd = '${workspaceFolder}',
stopOnEntry = false,
args = {},
initCommands = function() -- add rust types support
-- Find out where to look for the pretty printer Python module
local rustc_sysroot = vim.fn.trim(vim.fn.system('rustc --print sysroot'))
local script_import = 'command script import "' .. rustc_sysroot .. '/lib/rustlib/etc/lldb_lookup.py"'
local commands_file = rustc_sysroot .. '/lib/rustlib/etc/lldb_commands'
local commands = {}
local file = io.open(commands_file, 'r')
if file then
for line in file:lines() do
table.insert(commands, line)
end
file:close()
end
table.insert(commands, 1, script_import)
return commands
end,
}
}
Compile your program with Build solution
, add a break point to your code, and then run DAP
. You will see something like this.
Congratulations, now you can compile and debug Rust.
- Note that mason installs the debugger for you. You don't need to install any system dependency.
- If you find any issue while configuring DAP, run
:DapSetLogLevel trace
and:DapShowLog
to find the reason. -
Update 11/08/2023: Passing
arguments
in a.solution.toml
file is not required anymore, as by default Compiler.nvim now passes the-g
argument to the rust compiler (rustc
) to enable debug mode. But if you create a.solution.toml
file in your project you will still have to set the argument manually, as that will overwrite the default compiler arguments with your own. -
Update 15/08/20223: If you use the new options
Cargo build and run
orCargo build
, then you must enable debug mode in yourCargo.toml
this way.