0

I'm currently trying to set up remote debugging on a Raspberry Pi using the CodeLLDB plugin for Visual Studio Code and gdbserver. Unfortunately this doesn't seem to work, since every breakpoint I set is greyed out and the tooltip for it reads "Resolved locations: 0".

The version of CodeLLDB is v1.7.0 and the gdbserver says it's (Raspbian 8.2.1-2) 8.2.1.

What makes me think that this should work is, that if I connect to the gdbserver manually through lldb using target create /path/to/bin and then gdb-remote host:port it works without a problem. The lldb version that works is 13.0.1, while the CodeLLDB debugger says it's 14.0.0-custom, so maybe that has something to do with it?

Anyway, the relevant part of the launch.json looks like this:

{
  "type": "lldb",
  "request": "custom",
  "name": "Remote executable 'bin'",
  "preLaunchTask": "rust: remote ARM debug setup",
  "targetCreateCommands": ["target create /path/to/bin"],
  "processCreateCommands": ["gdb-remote host:port"]
}

Additional infos:

  • The language I'm trying to debug is rust
  • The binary was compiled for the target arm-unknown-linux-gnueabihf
  • I'm using VSCode on Arch Linux

I'm posting this half to organize what I think I know, but obviously also in hope for help. Any tips would be appreciated!

1 Answer 1

1

I finally got it to work after finding this useful little guide: https://github.com/vadimcn/vscode-lldb/wiki/Breakpoints-are-not-getting-hit

Using those tips I found out that lldb had located my files not in my workspace, but in some /project/src directory. This meant that all I had to do was add the following to my launch configuration:

"sourceMap": { "/project/src": "${workspaceFolder}/path/to/src" }

Now it works like a charm. The only remaining open question for me is what that /project/src path means. Because while it looks like an absolute path, it isn't, since no such directory exists on my machine.

Edit: After discussing this with the friend who setup the cross-compilation for this project, he made me aware that we are using cross(https://github.com/cross-rs/cross) which uses a docker container during the compilation process. /project/src is the directory in the container that the source files are mounted to during compilation.

This also finally clears up why this additional step was necessary in the first place!

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .