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

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

Windows 用のデバッグ・ツールを使用するには、インストールする必要があります。オプションとして、ローカルにない Microsoft モジュールのシンボル情報が必要な場合は、Microsoft Symbol Server をセットアップできます。
詳細については、「サポートされるデバッガと CDB パス」を参照してください。
デバッガの起動
デバッガーは、デバッグ プロセスを開始および実行する場所と方法に応じて、さまざまな動作モードで実行されます。モードの中には、特定のオペレーティング システムまたはプラットフォームでのみ利用可能なものもあります:
- Qt Widgets ベースのアプリケーションなど、Qt Creator 内 部で開発されたアプリケーションをデバッグするために内部で起動します。これは、デスクトップ Qt バージョンを使用しているすべてのプロジェクトや、プレーン C++ プロジェクトを含む、ほとんどのプロジェクトのデフォルトの開始モードです。
- Start external(外部で起動)ローカルまたはリモート・マシン上で、Qt Creator プロジェクトの適切なセットアップを行わずにプロセスを起動し、デバッグします。
- ローカルまたはリモートマシン上で、Qt Creator の外部ですでに開始され、実行されているプロセスをデバッグするためにアタッチします。
- Unix上でクラッシュしたプロセスをデバッグするためのCore。
- 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 デバッガーは、サポートするプラットフォームや環境の多様性に対応するため、さまざまなモー ドで実行します:
- プレーンモードは、コンソール入力を必要としないローカル起動プロセスをデバッグします。
- ターミナルモードは、コンソールを必要とするローカルに起動されたプロセスをデバッグします。
- Attach モードでは、Qt Creator の外部で起動されたローカルプロセスをデバッグします。
- Core モードは、クラッシュから生成されたコアファイルをデバッグします。
- リモート・モードは、Linux上で動作するGDBサーバーと対話します。
アプリケーションの停止
実行中のアプリケーションが終了する前に中断したり、アプリケーションが正常に動作し ない原因を突き止めたりすることができます。ブレークポイントを設定してアプリケーションを停止し、変数を調べたり変更したり、新しいブレークポイントを設定したり古いブレークポイントを削除したりして、アプリケーションの実行を続行します。
デバッガの制御下でアプリケーションの実行が開始されると、アプリケーションは通常と同じように動作し、実行されます。
実行中の C++ アプリケーションを中断するには、Debug >Interrupt に進みます。デバッガは、ブレークポイントに達すると自動的にアプリケーションを中断します。
アプリケーションが停止すると、Qt Creator :
- アプリケーションの現在位置のコール・スタックを表すデータを取得します。
- ローカル変数の内容を取得します。
- 式を調べます。
- C++ ベースのアプリケーションをデバッグしている場合、[レジスタ]、[モジュール]、および [逆アセンブラ] ビューを更新します。
変数の検査と変更、ブレークポイントの設定と削除を行い、アプリケーションの実行を続行できます。
データの検査
アプリケーションが停止すると、デバッガで特定のデータを調べることができます。データが利用できるかどうかは、アプリケーションをコンパイルする際のコンパイラの設定と、アプリケーションが停止する正確な場所に依存します。
予期しないイベントは例外と呼ばれ、デバッガは例外が発生したときにアプリケーションを停止させることができます。例外が発生したコードの場所に行くと、問題を調査し、修正する方法を見つけるのに役立ちます。
例えば、テキストを表示する変数があるのに、アプリケーションがそれを正しく表示しない場合、 データが正しくないか、表示テキストを設定するコードが何か間違っている可能性があります。コードのステップを踏んで変数への変更を調べれば、どこでエラーが発生しているかを見つけることができます。
次のビデオは、変数の値を調べる方法を示しています:
リモートデバッグ
Qt Creator を使えば、リモート・デバッグが簡単になります。リモート・マシンにGDBserverのようなデバッグ・サーバーがすでにインストールされており、アプリケーションのリモート実行がすでにセットアップされていて、Run (またはCtrl+R)ボタンを選択することで動作する一般的なケースでは、Debug (またはF5)ボタンを選択することでデバッグを開始することができます。
この場合、Qt Creator は、リモート・マシン上のデバッグ・サーバーとアプリケーション、および開発ホスト上の実際のデバッガを、正しい順序で自動的に起動して接続します。
このようにリモートデバッグのセットアップと実行を完全に自動化できない例外的なケースのために、Qt Creator は半自動ソリューションを提供しています。「Debug remote with GDB」および「Debug remote with CDB」を参照してください。
デバッグヘルパーの使用
QObjects や連想コンテナなどの複雑な構造をわかりやすく簡潔に表示するために、Qt Creator ではデバッグヘルパーと呼ばれる Python スクリプトを使用しています。
Qt Creator デバッグ・ヘルパーは、最も一般的な Qt クラス、標準 C++ コンテナ、およびスマート・ポインタの 200 以上が同梱されており、C++ アプリケーション開発者の通常のニーズをすぐに満たすことができます。
デバッグヘルパーはカスタマイズして追加することができます。
QMLとQt Quick
Qt Quick アプリケーションをデバッグするとき、JavaScript 関数をデバッグしながらアプリケーションの状態を検査できます。ブレークポイントを設定し、スタックトレースを表示し、ローカルや式を調べることができます。アプリケーションの実行中は、QML オブジェクトやユーザーインターフェ イスを検査したり、JavaScript の式を実行したりすることができます。
詳しくは、 Qt Quick プロジェクトのデバッグ、およびTutorial:Qt Quick debugging を参照してください。
チュートリアルも参照してください: C++ デバッグ」、「How To: デバッグ」、「デバッガ」、「デバッガ」、「キット」も参照してください。
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.