현재 gdb에서 내 애플리케이션의 원격 디버깅 문제가 발생했습니다. 원격 프로세스에 연결하고 IDE “의 시각적 디버깅을 사용하는 기능 (Visual Studio Code 사용)

문제는 IDE가 실제로 유용하지 않은 pid에 의해 로컬 프로세스에 연결할 수 있다는 것입니다. 따라서 로컬 포트 포워딩을 요청하면 로컬 포트를 사용하여 실제로 원하는 연결이 아닌 연결을 전달할 수 있습니다.

“pid-forwarding”과 같은 작업을 수행 할 수 있습니까? div id = “fac3326e75″>

는 실제로 원격 프로세스입니다.

댓글

  • 사용자 ' IDE가 어떤 IDE를 사용하고 있는지 알려주지 않습니다 (그리고 ' IDE를 사용하지 않기 때문에 ' 당신을 도울 수 있습니다). 하지만 gdbserver를 살펴보아야합니다. ' 내장 / 제한된 시스템에서 실행할 수있는 작은 프로그램이며 ' 팻 디버거 ' 더 강력한 시스템에서.
  • @UncleBilly 제가했습니다. " Visual Studio Code를 사용합니다 ". 안타깝게도 원격 디버깅을 지원하지 않는다고 기록되어 있습니다 …
  • @UncleBilly gdbserver 는 제가 원했던 것처럼 들립니다. 감사합니다.

답변

Uncle Billy 는이를 수행하는 좋은 방법은 GDB의 원격 디버깅 기능을 사용하는 것입니다. 이는 디버깅하려는 프로세스를 실행하는 호스트에서 “소형”디버거를 실행하고 개발 환경을 실행하는 호스트에서 gdb를 사용하여 연결하는 방식으로 작동합니다. 많은 IDE (VS Code 포함)가 gdb를 사용한 디버깅을 지원하므로 다른 플랫폼을 포함하여 어디서나 실행되는 프로세스를 대상으로하는 개발 환경의 편안함을 얻을 수 있습니다.

디버그하려는 프로세스를 실행하는 호스트에 gdbserver (종종 정적 바이너리를 복사하여)를 설치하고 실행해야합니다. 예 :

gdbserver --attach :9953 ${pid} 

포트 9953에 나열되고 주어진 프로세스 ID에 연결됩니다. 서버에 연결하는 다양한 방법 (직렬 포트, IP 주소 …)을 지정하고 명령을 실행하여 디버그하거나 실행중인 프로세스에 연결하거나 특정 프로세스없이 “디버깅 서버”를 실행할 수도 있습니다. .

개발 환경이있는 호스트에서 gdb :

$ gdb ... (gdb) target remote <IP address>:9953 

다른 모든 기능은 정상적으로 작동합니다. gdb는 원격 대상에서 필요한 파일 (라이브러리 등)을 전송하지만 속도를 높이기 위해 파일의 로컬 복사본을 가리킬 수 있습니다. 로컬 소스를 사용합니다.

두 호스트가 동일 할 때 예상대로 작동하지만 다른 호스트와 함께 작동하도록 만들 수도 있습니다 (예 : 예 : 디버깅). Linux 시스템의 Windows 프로그램 또는 일반적으로 더 큰 개발 플랫폼의 소형 임베디드 시스템에서 실행되는 프로그램입니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다