このページでは

Qt Quick アプリケーションのデバッグ

QML デバッガーと、お使いのオペレーティングシステム用のデバッガーを使用して、QML コードと C/C++ コードの両方を含むQt Quick アプリケーションをデバッグできます。通常、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>"
        },

ビルドフォルダの設定

ビルドフォルダがワークスペースフォルダの外にある場合、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 」の事前起動タスクが取得したポート番号を使用して、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.