VSCode의 CodeLLDB는 원격 gdbserver와 함께 사용할 수 없습니다.

VSCode의 CodeLLDB는 원격 gdbserver와 함께 사용할 수 없습니다.

현재 Visual Studio Code와 gdbserver용 CodeLLDB 플러그인을 사용하여 Raspberry Pi에서 원격 디버깅을 설정하려고 합니다. 불행하게도 내가 설정한 모든 중단점이 회색으로 표시되고 툴팁에 "해결된 위치: 0"이 표시되므로 이것이 작동하지 않는 것 같습니다.

CodeLLDB의 버전은 이고 v1.7.0, gdbserver는 이라고 말합니다 (Raspbian 8.2.1-2) 8.2.1.

무엇이 나에게 이런 느낌을 주나요?~해야 한다문제는 lldb 를 사용하여 gdbserver에 수동으로 연결하면 제대로 작동한다는 것입니다 target create /path/to/bin. gdb-remote host:port유효한 lldb 버전은 13.0.1이고 CodeLLDB 디버거에서는 이라고 말합니다 14.0.0-custom. 아마도 그것과 관련이 있을까요?

어쨌든 관련 부분은 다음과 같습니다 launch.json.

{
  "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"]
}

추가 정보:

  • 내가 디버깅하려는 언어는
  • 바이너리는 대상에 맞게 컴파일됩니다.arm-unknown-linux-gnueabihf
  • VSCode를 사용하고 있습니다아키텍처Linux

나는 내가 알고 있다고 생각하는 것을 정리하기 위해 이 부분을 게시하고 있지만 분명히 도움을 받기를 희망합니다. 어떤 조언이라도 대단히 감사하겠습니다!

답변1

이 유용한 작은 가이드를 찾은 후 마침내 작업을 시작했습니다. https://github.com/vadimcn/vscode-lldb/wiki/Breakpoints-are-not-getting-hit

이 팁을 사용하여 lldb가 내 작업 공간이 아닌 일부 /project/src디렉터리에서 내 파일을 찾고 있다는 사실을 발견했습니다. 즉, 시작 구성에 다음을 추가하기만 하면 됩니다.

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

이제 그것은 매력처럼 작동합니다. 나에게 남은 유일한 질문은 /project/src이 길이 무엇을 의미하는가이다. 왜냐하면 절대 경로처럼 보이지만 내 컴퓨터에는 그러한 디렉토리가 존재하지 않기 때문입니다.

편집: 이 프로젝트를 위해 크로스 컴파일을 설정한 친구와 논의한 후 그는 우리가 cross(https://github.com/cross-rs/cross) 컴파일 중에 도커 컨테이너를 사용합니다. /project/src컴파일 중에 소스 파일이 마운트되는 컨테이너의 디렉터리입니다.

이는 또한 처음에 이 추가 단계가 필요한 이유를 마침내 명확하게 해줍니다!

관련 정보