이 페이지에서

Qt Quick 애플리케이션 디버깅

QML과 C/C++ 코드가 모두 포함된 Qt Quick 애플리케이션은 QML 디버거와 해당 운영 체제의 디버거를 사용하여 디버깅할 수 있습니다. 일반적으로 Linux 및 macOS에서는 GDB를, Windows에서는 Visual Studio Windows 디버거를 사용합니다.

QML 디버거를 사용할 때 다음 작업을 수행할 수 있습니다:

  • '이 변수'를 포함한 변수 표시
  • 변수의 값 조작
  • 감시 표현식 추가
  • 조건부 중단점 추가
  • 식 평가 추가

참고: 디버깅을 수행하려면 TCP 포트에서 소켓을 열어야 하며, 이는 보안 위험을 초래할 수 있습니다. 인터넷상의 누구든지 디버깅 중인 애플리케이션에 연결하여 임의의 JavaScript 함수를 실행할 수 있습니다. 따라서 해당 포트가 방화벽으로 적절히 보호되어 있는지 반드시 확인해야 합니다.

애플리케이션 실행 및 디버깅

애플리케이션 내의 QML 코드만 디버그하려면, 먼저 애플리케이션을 시작한 다음 QML 디버거를 해당 애플리케이션에 연결하면 됩니다.

Qt Quick 애플리케이션을 실행하고 디버그하려면:

  1. 프로젝트에 대한 launch.json 파일을 생성합니다. 자세한 내용은 Qt 애플리케이션 디버깅을 참조하십시오.
  2. ' QML debugger'을 선택합니다.
  3. ' Qt: QML: Launch ' 디버그 구성을 선택합니다.

이 실행 디버그 구성은 launch.json 파일에 다음 줄을 추가합니다:

"configurations": [
    {
        "name": "Qt: QML: Launch",
        "type": "qml",
        "request": "launch",
        "program": "${command:cmake.launchTargetPath}"
    },
    {
        "name": "Qt: QML: Attach by port",
        "type": "qml",
        "request": "attach",
        "host": "localhost",
        "port": "^\"Custom port or \\${command:qt-qml.debugPort} for compound usage\""
    }
]

실행 중인 애플리케이션에 연결

애플리케이션의 QML 코드만 디버그하려는 경우, Qt Extension for VS Code가 먼저 애플리케이션을 시작한 다음 QML 디버거를 연결하는 것보다 고정된 포트 번호를 사용하여 실행 중인 애플리케이션에 디버거를 연결하는 것이 더 빠릅니다.

QML 코드만 디버그하려면:

  1. 프로젝트에 대한 launch.json 파일을 생성합니다. 자세한 내용은 Qt 애플리케이션 디버깅을 참조하십시오.
  2. ' Add Configuration'를 선택한 다음, ' Qt: QML: Attach by port ' 디버그 구성을 선택합니다.
  3. Terminal 에서 다음 인수를 사용하여 애플리케이션을 시작합니다:
    <your_executable_path> -qmljsdebugger=host:<IP_address>,port:<port_number>,block,services:DebugMessages,QmlDebugger,V8Debugger,QmlInspector

    여기서 IP_address는 애플리케이션이 실행 중인 호스트의 IP 주소이고, port_number는 디버깅 포트이며, block은 디버그 클라이언트가 서버에 연결될 때까지 애플리케이션이 실행되지 않도록 합니다. 이렇게 하면 시작 시점부터 디버깅이 가능해집니다.

  4. launch.json 파일의 port 옵션 값으로 포트 번호를 설정하십시오:
    "configurations": [
        {
            "name": "Qt: QML: Attach by port",
            "type": "qml",
            "request": "attach",
            "host": "localhost",
            "port": "<port_number>"
        },

빌드 폴더 설정

빌드 폴더가 작업 공간(workspace) 폴더 외부에 있는 경우, Qt Extension for VS Code는 가상 및 실제 QML 파일에 해당하는 QRC 파일을 찾기 위해 해당 폴더의 위치를 알아야 합니다. 빌드 폴더를 설정하려면 Qt: QML: Launch 또는 Qt: QML: Attach by port 디버그 구성에서 buildDirs 의 값으로 해당 폴더를 추가하십시오.

예를 들어:

"configurations": [
    {
        "name": "Qt: QML: Launch",
        "type": "qml",
        "request": "launch",
        "program": "${command:cmake.launchTargetPath}",
        "buildDirs": [
             "<my_build_folder_outside_workspace>",
             "<my_build_folder_outside_workspace_2>",
         ]
    }
]

기본 인자 재정의

기본 디버거 인수를 재정의하려면, Qt: QML: Launch 또는 Qt: QML: Attach by port 디버그 구성에서 debuggerArgs 의 값으로 인수를 추가하십시오.

예:

"configurations": [
    {
        "name": "Qt: QML: Launch",
        "type": "qml",
        "request": "launch",
        "program": "${command:cmake.launchTargetPath}",
        "debuggerArgs": "-qmljsdebugger=<arguments>",
    }
]

실행 파일에 인자 전달

실행 파일에 인수를 전달하려면, Qt: QML: Launch 또는 Qt: QML: Attach by port 디버그 구성의 args 값으로 해당 인수를 추가하십시오.

예:

"configurations": [
    {
        "name": "Qt: QML: Launch",
        "type": "qml",
        "request": "launch",
        "program": "${command:cmake.launchTargetPath}",
        "args": [
            "<argument>",
            "<argument>    <argument>",
        ]
    }
]

C/C++ 및 QML 혼합 코드 디버깅

Qt: Acquire Port 의 사전 실행 작업(pre-launch task)이 확보한 포트 번호를 사용하여, 먼저 애플리케이션을 시작한 다음 QML 및 C/C++ 디버거를 모두 해당 애플리케이션에 연결하는 디버그 구성을 만들 수 있습니다.

C/C++ 및 QML 코드가 모두 포함된 Qt Quick 애플리케이션을 디버그하려면:

  1. launch.json 파일을 엽니다. 자세한 내용은 Qt 애플리케이션 디버깅을 참조하십시오.
  2. ' Add Configuration'을 선택한 다음, 사용 중인 디버거에 맞는 ' Qt: Debug with cppdbg and QML debugger ' 또는 ' Qt: Debug with cppvsdbg and QML debugger (Windows) ' 디버그 구성을 선택합니다.
  3. launch.json 파일에 C++/QML 디버깅을 위한 복합 실행 및 실행 전 작업을 추가합니다:
    "compounds": [
            {
                "name": "C++/QML",
                "configurations": ["Qt: Debug with cppdbg and QML debugger", "Qt: QML: Attach by port"],
                "preLaunchTask": "Qt: Acquire Port",
            }
        ]
    "compounds": [
            {
                "name": "C++/QML",
                "configurations": ["Qt: Debug with cppvsdbg and QML debugger (Windows)", "Qt: QML: Attach by port"],
                "preLaunchTask": "Qt: Acquire Port",
            }
        ]

‘Qt 애플리케이션 디버깅’, Qt for Python 애플리케이션 디버깅’ 및 ‘VS Code: 디버깅’도 참조하십시오 .

© 2026 The Qt Company Ltd. 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.