GDB를 사용하여 원격 디버깅
일반적으로 원격 머신이나 컨테이너에 GDBserver가 이미 설치되어 있고, ‘ Run ’ 버튼(또는 Ctrl+R)을 선택하면 애플리케이션의 원격 실행이 이미 설정되어 정상적으로 작동하는 경우, ‘ Debug ’ 버튼(또는 F5)을 선택하여 원격 디버깅을 시작할 수 있습니다.
이 경우, ‘ Qt Creator ’가 실행되어 디버그 서버와 원격 머신의 애플리케이션, 그리고 개발 호스트의 실제 디버거를 올바른 순서대로 자동으로 연결합니다.
이 방법이 권장되는 방법입니다.
이 자동 설정에 필요한 요구 사항이 충족되지 않지만 원격 컴퓨터에서 GDB 서버(또는 GDB 직렬 프로토콜을 사용하는 호환 가능한 프로브)를 실행할 수 있는 경우에도 Qt Creator 를 사용하여 애플리케이션을 디버그할 수 있습니다.
애플리케이션 실행 중, 원격 컴퓨터에 SSH 접속 가능
원격 컴퓨터에서 이미 실행 중인 애플리케이션에 연결하고자 하고, 로컬 컴퓨터 호스트에서 SSH를 통해 디버그 서버를 시작할 수 있는 경우, Debug > Start Debugging > Attach to running applications 로 이동하십시오.
애플리케이션이 실행 중이 아니며, 원격 시스템에 터미널 접속이 가능한 경우
로컬 머신에서 SSH를 통해 디버그 서버를 시작할 수 없는 경우, 장치 설명서를 참조하여 디버그 서버를 시작할 수 있는 다른 방법을 확인하십시오.
원격 컴퓨터에 터미널 접속이 가능하고 GDB 서버가 설치되어 있다면, 실행 파일을 원격 컴퓨터로 수동으로 전송한 후 포트 번호와 실행 파일을 전달하여 gdbserver 를 시작할 수 있습니다:
gdbserver :1234 /path/to/executable
그러면 일반적으로 다음과 같은 응답이 표시됩니다:
Process /path/to/executable created; pid = 5159 Listening on port 1234
Qt Creator 를 실행하는 로컬 머신에서:
- Debug > Start Debugging > Attach to Running Debug Server 로 이동합니다.

- Kit 에서 프로젝트 빌드에 사용할 빌드 및 실행 키트를 선택합니다.
- Server port 에서 원격 컴퓨터의 이름과 사용할 포트 번호를 입력합니다.
- Local executable 에서 로컬 머신의 애플리케이션 실행 파일 경로를 지정합니다.
- Command line arguments 에서 실행 파일에 전달할 명령줄 인수를 지정합니다.
- Working directory 에서 작업 디렉터리를 지정합니다. 기본값은 빌드 결과 디렉터리입니다.
- 콘솔 애플리케이션의 경우 ‘ Run in terminal ’를 선택하십시오.
- 메인 함수에서 디버거를 중지하려면 ‘ Break at "main" ’를 선택하십시오.
target extended-remote mode에서 연결을 생성하려면 ‘ Use target extended-remote to connect ’를 선택하십시오. 이 모드에서는 디버깅 대상 애플리케이션이 종료되거나 연결을 해제하더라도 디버거는 대상과 계속 연결된 상태를 유지합니다. 애플리케이션을 다시 실행하거나, 실행 중인 애플리케이션에 연결하거나, 대상에 특화된 모니터 명령을 사용할 수 있습니다. 예를 들어, GDB는 `--once` 옵션을 사용하여 호출되지 않는 한 종료되지 않지만, `monitor exit` 명령을 사용하여 종료시킬 수 있습니다.- Override SysRoot 에서 기본값인
sysroot대신 사용할sysroot의 경로를 지정합니다. - Init commands 에서 대상과의 연결이 설정된 직후 즉시 실행할 명령을 입력합니다.
- Reset commands 에서 대상과의 연결을 재설정할 때 실행할 명령을 입력합니다.
- Debug information 에서 디버그 정보를 저장할 위치를 지정합니다. 빈 경로는 사용할 수 없습니다.
- Override server channel 에서 직렬 라인이나 사용자 지정 포트와 같이 사용할 통신 채널을 지정합니다.
- Recent 에서 사용할 최근 구성을 선택합니다.
- OK 를 선택하여 디버깅을 시작합니다.
기본적으로 응답이 없는 GDB 프로세스는 40초 후에 종료됩니다. ‘ GDB timeout ’에서 타임아웃 시간을 늘리려면 ‘ Preferences ’ > ‘ Debugger ’ > ‘ GDB ’로 이동하십시오.
GDB에서 target extended-remote 모드로 연결하는 방법에 대한 자세한 내용은 ‘GDB를 사용한 디버깅: 원격 대상에 연결하기’를 참조하십시오.
애플리케이션이 실행 중이며, 원격 시스템에 대한 터미널 액세스 및 gdbserver가 사용 가능한 경우
이 경우는 gdbserver 를 시작하는 방식이 다르다는 점을 제외하면 이전 섹션과 거의 동일합니다:
gdbserver --attach :1234 <PID of running application>
SSH 포트 포워딩 사용
GDB 서버 포트를 노출할 수 없는 원격 대상에서 디버깅을 활성화하려면 SSH 터널링을 사용하여 원격 포트를 로컬 포트에 매핑하십시오. Qt Creator 는 로컬 및 원격 포트를 자동으로 감지합니다.
SSH 포트 포워딩을 활성화하려면:
- Preferences > ‘ Devices ’로 이동합니다.

- Device 에서 ‘ Remote Linux Device ’를 선택합니다.
- Use SSH port forwarding for debugging 를 선택합니다.
- ' Apply'를 선택합니다.
명령어로 GDB 서버 시작
프로젝트의 일부로 GDB 서버 설정을 자동화하고 영구적으로 유지하려면(예: 원격 장치에서 gdbserver 를 시작하는 스크립트가 있는 경우), Remote Debugger 실행 구성을 추가하십시오. 디버깅을 시작할 때마다 런처 명령이 자동으로 실행되므로 수동으로 연결을 설정할 필요가 없습니다.
원격 디버거 실행 구성을 추가하려면:
- Projects > Run Settings 로 이동합니다.
- Add > Remote Debugger > Create 을 선택합니다.
- Command 에서 GDB 서버 연결을 설정하는 스크립트나 명령어를 지정합니다.
- Command line arguments 에서 런처 명령에 전달할 인수를 지정합니다.
- Symbol file (local executable) 에서 로컬 컴퓨터에 있는 애플리케이션 실행 파일의 경로를 지정합니다.
- Server channel 에서 사용할 통신 채널을 지정합니다. 기본값은
tcp://127.0.0.1:1234입니다. - Break at "main" 을 선택하면 디버거가 메인 함수에서 중지됩니다.
- 콘솔 애플리케이션의 경우 ‘ Run in terminal ’을 선택하십시오.
- 확장 원격 모드로 연결하려면 ‘ Use "target extended-remote" to connect ’를 선택하십시오.
- 키트 선택기에서 실행 구성을 선택하고 F5 키를 눌러 디버깅을 시작합니다.
또한 ‘방법: 디버깅’, ‘방법: 원격 Linux용 개발’, ‘GDB’, ‘디버깅’, ‘디버거’ 및 ‘키트 관리’를참조하십시오 .
Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.