이 페이지에서

GDB로 원격 디버그

원격 머신이나 컨테이너에 이미 GDB 서버가 설치되어 있고 애플리케이션의 원격 실행이 이미 설정되어 있고 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 을 실행하는 로컬 머신에서:

  1. Debug > Start Debugging > Attach to Running Debug Server 로 이동합니다.

    실행 중인 디버그 서버에 연결 대화 상자

  2. Kit 에서 프로젝트 빌드에 사용할 빌드 및 실행 키트를 선택합니다.
  3. Server port 에 원격 컴퓨터의 이름과 사용할 포트 번호를 입력합니다.
  4. Local executable 에서 로컬 머신의 애플리케이션 실행 파일 경로를 지정합니다.
  5. Command line arguments 에서 실행 파일에 전달할 명령줄 인수를 지정합니다.
  6. Working directory 에서 작업 디렉터리를 지정합니다. 기본값은 빌드 결과의 디렉터리입니다.
  7. 콘솔 애플리케이션의 경우 Run in terminal 을 선택합니다.
  8. Break at "main" 을 선택하여 메인 함수에서 디버거를 중지합니다.
  9. target extended-remote mode 에서 연결을 만들려면 Use target extended-remote to connect 을 선택합니다. 이 모드에서는 디버깅된 애플리케이션이 종료되거나 분리되어도 디버거가 대상에 연결된 상태로 유지됩니다. 애플리케이션을 다시 실행하거나, 실행 중인 애플리케이션에 연결하거나, 대상에 특정한 모니터 명령을 사용할 수 있습니다. 예를 들어 GDB는 --once 옵션을 사용하여 호출하지 않으면 종료되지 않지만 monitor exit 명령을 사용하여 종료하도록 할 수 있습니다.
  10. Override SysRoot 에서 기본값 sysroot 대신 사용할 sysroot 경로를 지정합니다.
  11. Init commands 에 대상에 대한 연결이 설정된 후 즉시 실행할 명령을 입력합니다.
  12. Reset commands 에 대상에 대한 연결을 재설정할 때 실행할 명령을 입력합니다.
  13. Debug information 에 디버그 정보를 저장할 위치를 지정합니다. 빈 경로는 사용할 수 없습니다.
  14. Override server channel 에서 사용할 통신 채널(예: 직렬 회선 또는 사용자 지정 포트)을 지정합니다.
  15. Recent 에서 사용할 최근 구성을 선택합니다.
  16. OK 를 선택하여 디버깅을 시작합니다.

기본적으로 응답하지 않는 GDB 프로세스는 40초 후에 종료됩니다. GDB timeout 에서 시간 제한을 늘리려면 환경설정 > Debugger > GDB 로 이동하세요.

GDB에서 target extended-remote 모드로 연결하는 방법에 대한 자세한 내용은 GDB로 디버깅하기: 원격 대상에 연결하기를 참조하세요.

애플리케이션 실행 중, 원격 컴퓨터에 대한 터미널 액세스 및 gdbserver 사용 가능

이 경우는 gdbserver 이 다르게 시작된다는 점을 제외하면 이전 섹션과 거의 동일합니다:

gdbserver --attach :1234 <PID of running application>

SSH 포트 포워딩 사용

GDB 서버 포트를 노출할 수 없는 원격 대상에서 디버깅을 사용하려면 SSH 터널링을 사용하여 원격 포트를 로컬 포트에 매핑합니다. Qt Creator 은 로컬 및 원격 포트를 자동으로 감지합니다.

SSH 포트 포워딩을 켜려면 다음과 같이 하세요:

  1. 환경설정 > Devices 으로 이동합니다.

    장치 환경설정의 원격 Linux 장치

  2. Device 에서 Remote Linux Device 을 선택합니다.
  3. Use SSH port forwarding for debugging 을 선택합니다.
  4. OK 을 선택합니다.

방법: 디버그, 방법: 원격 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.