Qt Quick 애플리케이션 디버그
QML 디버거와 운영 체제용 디버거를 사용하여 QML 및 C/C++ 코드가 모두 포함된 Qt Quick 애플리케이션을 디버깅할 수 있습니다. 일반적으로 Linux 및 macOS에서는 GDB를, Windows에서는 Visual Studio Windows 디버거를 사용합니다.
QML 디버거를 사용하는 경우 다음을 수행할 수 있습니다:
- 이 변수를 포함한 변수 표시
- 변수 값 조작
- 감시 표현식 추가
- 조건부 중단점 추가
- 표현식 평가 추가
참고: 디버깅을 하려면 TCP 포트에서 소켓을 열어야 하므로 보안 위험이 있습니다. 인터넷에 있는 모든 사람이 디버깅 중인 애플리케이션에 연결하여 자바스크립트 함수를 실행할 수 있습니다. 따라서 해당 포트가 방화벽으로 적절히 보호되고 있는지 확인해야 합니다.
애플리케이션 실행 및 디버깅
애플리케이션의 QML 코드만 디버깅하려면 먼저 애플리케이션을 시작한 다음 QML 디버거를 연결하면 됩니다.
Qt Quick 애플리케이션을 시작하고 디버깅하려면 다음과 같이 하세요:
- 프로젝트에 대한
launch.json파일을 만듭니다. 자세한 내용은 Qt 애플리케이션 디버그를 참조하세요. - QML debugger 을 선택합니다.
- 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 코드만 디버깅하려면 VS Code용 Qt 익스텐션이 먼저 애플리케이션을 시작한 다음 QML 디버거를 연결하는 것보다 고정 포트 번호를 사용하여 실행 중인 애플리케이션에 디버거를 연결하는 것이 더 빠릅니다.
QML 코드만 디버깅하려면:
- 프로젝트에 대한 launch.json 파일을 생성합니다. 자세한 내용은 Qt 애플리케이션 디버그를 참조하세요.
- Add Configuration 을 선택한 다음 Qt: QML: Attach by port 디버그 구성을 선택합니다.
- Terminal 에서 다음 인수를 사용하여 애플리케이션을 시작합니다:
<your_executable_path> -qmljsdebugger=host:<IP_address>,port:<port_number>,block,services:DebugMessages,QmlDebugger,V8Debugger,QmlInspector
여기서 IP_address는 애플리케이션이 실행 중인 호스트의 IP 주소, port_number는 디버깅 포트, block은 디버그 클라이언트가 서버에 연결할 때까지 애플리케이션이 실행되지 않도록 합니다. 이렇게 하면 처음부터 디버깅이 가능합니다.
- 포트 번호는 launch.json 파일에서
port옵션의 값으로 설정합니다:"configurations": [ { "name": "Qt: QML: Attach by port", "type": "qml", "request": "attach", "host": "localhost", "port": "<port_number>" },
빌드 폴더 설정
빌드 폴더가 작업 공간 폴더 외부에 있는 경우, VS Code용 Qt Extension은 가상 및 심적 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 사전 실행 작업이 획득한 포트 번호를 사용하여 QML 및 C/C++ 디버거를 모두 첨부하는 디버그 구성을 만들 수 있습니다.
C/C++ 및 QML 코드가 모두 포함된 Qt Quick 애플리케이션을 디버깅하려면 다음과 같이 하세요:
- launch.json 파일을 엽니다. 자세한 내용은 Qt 애플리케이션 디버그를 참조하세요.
- Add Configuration 을 선택한 다음 디버거와 일치하는 Qt: Debug with cppdbg and QML debugger 또는 Qt: Debug with cppvsdbg and QML debugger (Windows) 디버그 구성을 선택합니다.
- C++/QML 디버깅을 위한 복합 실행 및 사전 실행 작업을 launch.json 파일에 추가합니다:
"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 애플리케이션 디버그 및 VS 코드도참조하세요 : 디버깅을 참조하십시오.
© 2024 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.