rust-analyzer/docs/dev/debugging.md
Veetaha 351cc9021e
Add the article
Co-Authored-By: Laurențiu Nicola <lnicola@users.noreply.github.com>
2020-02-16 23:33:23 +02:00

2.9 KiB

Debugging vs Code plugin and the Language Server

Prerequsities

  • Install LLDB and the LLDB Extension VSCode extensions.

  • Open the root folder in VSCode. Here you can access the preconfigured debug setups.

    Debug options view
  • Install all TypeScript dependencies

    cd editors/code
    npm i
    

Common knowledge

  • All debug configurations open new [Extension Development Host] VSCode instance where only your rust-analyzer extension is enabled.
  • To activate the extension you need to open any Rust project folder in [Extension Development Host].

Debug TypeScript VSCode extension

  • Run Extension - runs the extension with the globally installed ra_lsp_server binary.
  • Run Extension (Dev Server) - runs extension with binary from your locally built target/debug/ra_lsp_server.

TypeScript debugging is configured to watch your source edits and recompile. To apply changes to already running debug process press Ctrl+Shift+P and run the following command in your [Extension Development Host]

> Developer: Reload Window

Debug Rust LSP server

  • To attach to the lsp server in linux you'll have to run:

    echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
    

    This enables ptrace on non-forked processes

  • Enable debug symbols in Cargo.toml:

      [profile.dev]
      debug = 2
    
  • Select Run Extension (Dev Server) to run your locally built target/debug/ra_lsp_server.

  • In the original VSCode window once again select Attach To Server debug configuration.

  • A list of running processes should appear. Select the ra_lsp_server from this repo.

  • Navigate to crates/ra_lsp_server/src/main_loop.rs and add a breakpoint to the on_task function.

  • Go back to the [Extension Development Host] instance and hover over a rust variable and your breakpoint should hit.

Demo

Troubleshooting

Can't find the ra_lsp_server process

It could be a case of just jumping the gun.

The ra_lsp_server is only started once the onLanguage:rust activation.

Make sure you open a rust file in the [Extension Development Host] and try again.

Can't connect to ra_lsp_server

Make sure you have run echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope.

By default this should reset back to 1 everytime you log in.

Breakpoints are never being hit

Check your version of lldb if it's version 6 and lower use the classic adapter type. It's lldb.adapterType in settings file.

If you're running lldb version 7 change the lldb adapter type to bundled or native.