Attach to process
Run | Attach to Process CtrlAltF5
RustRover provides a way to attach the debugger to local processes. You can attach to Rust processes with GDB or MSVC LLDB on Windows, LLDB on macOS, and both GDB and LLDB on Linux. When applicable, debuggers for other languages (for example, Python debugger) can be used as well.
note
If you want to debug a program that can be started from RustRover, the best way to do it is to start a local debugging session. This gives you the full debugger functionality while sparing you the overhead of extra configuration.
On Ubuntu and some other Linux distributions, you might get the ptrace: Operation not permitted error message upon the first attempt to attach to a process. Do one of the following:
To disable this restriction temporarily, enter the command:
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
To disable this restriction permanently, open the
/etc file for editing and change the line/sysctl.d /10-ptrace.conf kernel.yama.ptrace_scope = 1
tokernel.yama.ptrace_scope = 0
.To apply the changes immediately, enter the above command
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
.Alternatively, run
sudo service procps restart
or restart your system.
You can find more details here.
Press CtrlAltF5 or select Run | Attach to Process from the main menu.
The Attach to Process dialog opens the list of all the detected running processes.
You can view the processes as a list or as a tree and search for a particular process by name:
For each process, you can find the executable name and process ID, the user that launched it, the available debuggers, and the command used for launching.
Use the drop-down menu to filter the list of processes by the type of the debugger:
You can also filter the list by setting Show only my processes:
Select the process and click Attach with....
On Linux, you can select the preferred debugger from the drop-down list. For other OS, the debugger is predefined. For more information, refer to Debugger options.
Proceed with debugging the same way you usually do it in RustRover (set breakpoints, step through, pause and resume the process, evaluate expressions, and so on).
note
In case the process you have attached to does not provide debug information, breakpoints will be unavailable and stepping will be performed in the disassembly view.
The procedure of detaching from a process is the same as for stopping a debug session. However, note that when you detach, the debug session closes but the process continues to run.
Click the Stop
button on the main toolbar in the Debug tool window.
Alternatively, click Stop
on the main toolbar or press CtrlF2, then select the session to be closed.
Thanks for your feedback!