현재 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 프로그램 또는 일반적으로 더 큰 개발 플랫폼의 소형 임베디드 시스템에서 실행되는 프로그램입니다.