デバッグ
デバッガーを使用して、以下の操作を行うことができます:
- 実行可能バイナリファイルのデバッグ - GNU Symbolic Debugger (GDB)、Microsoft Console Debugger (CDB)、および低レベル仮想マシン (LLVM) プロジェクトのデバッガである LLDB。
- QML および JavaScript コード、ならびにQt Quick アプリケーションのデバッグ — QML/JavaScript デバッガ。
- Pythonソースコードのデバッグ — PDB。
デバッガの設定
Qt Creator は、システム上で検出されたデバッガの中から、各キットに適したものを自動的に選択します。別のキットを選択することも可能です。各キットで使用するデバッガとコンパイラを指定するには、Preferences >Kits に移動してください。

デバッガーの設定が必要になるのは、デバッガーが見つからない(たとえば、Windows では CDB デバッガーを自分でインストールする必要がある)か、Qt Creator がインストールされているバージョンをサポートしていないために自動設定が失敗した場合のみです。 たとえば、システムに GDB がインストールされていない場合や、インストールされているバージョンが古く、代わりにローカルにインストールされた代替デバッガを使用したい場合などです。
自動検出されたキットのデバッガを変更するには、Preferences >Kits >Clone に移動してキットのコピーを作成し、クローンしたキットのパラメータを変更します。プロジェクトでクローンしたキットを有効にすることを忘れないでください。
デバッガーの追加表示
使用したいデバッガーが自動的に検出されない場合は、Preferences >Kits >Debuggers >Add の順に移動して、デバッガーを追加してください。

自動的に検出されたデバッガーのリストを更新するには、[Re-detect] を選択してください。
Windows 用のデバッグツールを使用するには、それらをインストールする必要があります。また、ローカルに見つからない Microsoft モジュールのシンボル情報が必要な場合は、Microsoft シンボルサーバーを設定することもできます。
詳細については、「サポートされているデバッガとCDB パス」を参照してください。
デバッガーの起動
デバッガーは、デバッグ対象のプロセスをどこで、どのように開始・実行するかによって、さまざまな動作モードで実行されます。一部のモードは、特定のオペレーティングシステムまたはプラットフォームでのみ利用可能です。
- Start internal:Qt Widgets ベースのアプリケーションなど、Qt Creator 内で開発されたアプリケーションをデバッグします。これは、デスクトップ版Qtを使用するすべてのプロジェクトや、純粋なC++プロジェクトを含む、ほとんどのプロジェクトのデフォルトの起動モードです。
- 「外部起動」は、適切なQt Creator プロジェクト設定なしに、ローカルまたはリモートマシン上でプロセスを起動・デバッグするためのモードです。
- 「Attachto」は、Qt Creator の外部で、ローカルまたはリモートマシン上で既に起動して実行中のプロセスをデバッグするために使用します。
- 「Core」は、Unix 上でクラッシュしたプロセスをデバッグするために使用します。
- 「Post-mortem」は、Windows 上でクラッシュしたプロセスをデバッグします。
通常、F5キーおよび「Start Debugging of Startup Project 」ボタンを押すと、その状況に適した動作モードが開始されます。したがって、デスクトップ Windows をターゲットとする MinGW ツールチェーンを使用する C++ アプリケーションの場合、GDB エンジンは「内部開始」モードで起動します。 C++ プラグインを使用する QML アプリケーションの場合、QML/C++混合エンジンが起動し、C++ 部分は GDB および GDB サーバーによるリモートデバッグによって処理されます。
プロジェクトの実行設定で実行構成パラメータ(Run in Terminal など)を変更するか、Debug >Start Debugging メニューからオプションを選択して、他の動作モードを選択してください。
GDBの実行モード
GDB デバッガは、サポートされているさまざまなプラットフォームや環境に対応するため、異なるモードで実行されます。
- プレーンモードは、コンソール入力を必要としない、ローカルで起動されたプロセスをデバッグします。
- ターミナルモードは、コンソールを必要とするローカルで起動されたプロセスをデバッグします。
- アタッチモードは、Qt Creator の外で起動されたローカルプロセスをデバッグします。
- コアモードは、クラッシュによって生成されたコアファイルをデバッグします。
- リモートモードは、Linux上で実行されているGDBサーバーと連携します。
アプリケーションの停止
実行中のアプリケーションが終了する前に中断したり、アプリケーションが正しく動作しない原因を突き止めたりすることができます。ブレークポイントを設定してアプリケーションを一時停止し、変数の確認や変更、新しいブレークポイントの設定や古いブレークポイントの削除を行った後、アプリケーションの実行を再開します。
アプリケーションがデバッガの制御下で実行を開始すると、通常どおりに動作し、パフォーマンスも通常通りになります。
実行中の C++ アプリケーションを中断するには、[Debug ] > [Interrupt] を選択します。ブレークポイントに到達すると、デバッガによってアプリケーションが自動的に中断されます。
アプリケーションが停止すると、Qt Creator は次の処理を行います。
- アプリケーションの現在の位置におけるコールスタックを表すデータを取得します。
- ローカル変数の内容を取得します。
- 式を検査します。
- C++ ベースのアプリケーションをデバッグしている場合、[レジスタ]、[モジュール]、および [逆アセンブラ] ビューを更新します。
変数の確認や変更、ブレークポイントの設定や削除を行い、その後、アプリケーションの実行を続行することができます。
データの確認
アプリケーションが停止すると、デバッガで特定のデータを調査できます。利用可能なデータは、アプリケーションのコンパイル時のコンパイラ設定や、アプリケーションが停止した正確な位置によって異なります。
予期しないイベントは「例外」と呼ばれ、例外が発生するとデバッガはアプリケーションを停止させることができます。例外が発生したコードの箇所に移動することで、問題の調査や修正方法の特定に役立ちます。
たとえば、テキストを表示する変数があるにもかかわらず、アプリケーションがそれを正しく表示しない場合、データが正しくないか、表示テキストを設定するコードに問題がある可能性があります。コードをステップ実行して変数の変化を確認することで、エラーが発生している箇所を特定できます。
以下の動画では、変数の値を確認する方法を紹介しています:
リモートデバッグ
Qt Creator により、リモートデバッグが容易になります。一般的なケースとして、リモートマシンにGDBserverのようなデバッグサーバーがすでにインストールされており、アプリケーションのリモート実行が設定済みで、「Run 」ボタン(またはCtrl+R)を選択するだけで動作する場合、Debug ボタン(またはF5)を選択することでデバッグを開始できます。
この場合、「Qt Creator 」は、リモートマシン上のデバッグサーバーとアプリケーション、および開発ホスト上の実際のデバッガーを、正しい順序で自動的に起動・接続します。
この完全に自動化されたリモートデバッグの設定および実行が不可能な例外的なケースについては、Qt Creator は半自動のソリューションを提供しています。「GDB を使用したリモートデバッグ」および「CDB を使用したリモートデバッグ」を参照してください。
デバッグヘルパーの使用
QObjects や連想コンテナなどの複雑な構造を明確かつ簡潔に表示するために、Qt Creator では「デバッグヘルパー」と呼ばれる Python スクリプトを使用しています。
Qt Creator には、200 以上の最も一般的な Qt クラス、標準 C++ コンテナ、およびスマートポインタ用のデバッグヘルパーが同梱されており、C++ アプリケーション開発者の一般的なニーズをそのままの状態でカバーしています。
デバッグヘルパーはカスタマイズや追加が可能です。
QML およびQt Quick
Qt Quick アプリケーションをデバッグする際、JavaScript 関数のデバッグ中にアプリケーションの状態を検査することができます。ブレークポイントを設定したり、コールスタックトレースを表示したり、ローカル変数や式を調べたりすることができます。アプリケーションの実行中に、QML オブジェクトやユーザーインターフェースを検査したり、JavaScript 式を実行したりすることができます。
詳細については、「 Qt Quick プロジェクトのデバッグ」および「チュートリアル:Qt Quick のデバッグ」を参照してください。
関連項目として 、「チュートリアル:C++のデバッグ」、「手順:デバッグ」、「デバッガ」、「キットの管理」も参照してください 。
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.