デバッガーのトラブルシューティング
このセクションでは、デバッグ中に遭遇する可能性のある典型的な問題とその解決策を示します。
デバッガーを起動できない
一部のアンチウイルス アプリケーションでは、デバッガーがデータを取得できません。たとえば、Avira AntiVir が開発 PC にインストールされている場合、Windows でデバッガを起動すると、次のメッセージが表示されて失敗することがあります:オペレーティング システムからシグナルを受信したため、デバッグ プロセス が停止しました。シグナル名:?不明なシグナル。
Avira AntiVir Desktop-Products の一部のバージョンには、Qt Creator を 含むさまざまな開発環境で既知の問題があります。この問題を解決するには、バージョンavipbb.sys 10.0.22.22 に更新する必要があります。詳細については、2010-12-08 以降の IDE/デバッガの使用制限を参照してください。
Wacom タブレットなど一部のデバイスでは、実行中のプロセスがデバッガーの起動を停止する場合があります。実行中のプロセスをすべて停止してから、デバッガーを再起動します。
デバッガーがブレークポイントをヒットしない
デバッグ情報を持たないリリースビルドを作成した可能性があります。GNU Compiler Collection (GCC) デバッグ・ビルドには、コンパイラのコマンドラインに-g オプションがあります。コンパイル出力にこのオプションがあるかどうか確認してください。ない場合は、Projects モードでビルド設定を調整してください。
デバッガーが動作しない
デバッガーが正しく動作しない場合は、以下を試してください:
- 少なくともQt Creator 3.0.1 を使用していることを確認してください。
(Run) を選択して、ビルドおよび実行キットのセレクタが実行可能なターゲットを選択し、アプリケーションを実行できることを確認します。- デバッガが正しくセットアップされていることを確認してください。
- Debug モードで、View >Views >Debugger Log と進み、[Debugger Log]ビューを開きます。右側のペインの内容をブラウズして、何が問題だったかを調べます。IRC (Libera.Chat の #qt-creator チャンネル) で質問する前に、Qt Creator メーリングリスト (qt-creator@qt-project.org) へのデバッガ関連の質問に必ずペインの内容を添付するか、コード貼り付けサービスに貼り付けてください。
注意: エラー 135 は通常、依存 DLL が見つからないことを意味します。
ポインタ変数のメンバが直接表示されない
Locals およびExpressions のビューを使用してポインタ変数を検査し、変数ツリー項目を展開すると、別のツリー項目レベルが表示されます。ポインタ変数のメンバを直接表示するには、Locals およびExpressions ビューのコンテキストメニューでDereference Pointers Automatically を選択します。
変数をまったく表示できない場合は、デバッグ・ビルド構成を選択したかどうかを確認してください。
構造体メンバーが構造体レイアウトに従ってソートされない
デフォルトでは、構造体メンバーはアルファベット順に表示されます。メモリ内の実際のレイアウトを確認するには、Locals およびExpressions ビューのコンテキスト・メニューでSort Members of Classes and Structs Alphabetically をクリアします。
起動時および実行時に内蔵デバッガが遅い
デバッグ情報のロードに関連する遅さは避けられません。以下のセクションでは、可能な解決策をいくつか説明します。
GDB シンボルインデックスのキャッシュ
GDB をバックエンドとして使用する場合、シンボル・インデックスのコピーをディスク上のキャッ シュに自動的に保存し、将来同じバイナリをロードするときにそこから取得することができま す。Preferences (環境設定)>Debugger >GDB >Use automatic symbol cache.

ブレークポイント数の最小化
デバッグの遅さの原因は、デバッガー内部でブレークポイントを維持すること(状況によっては、ステップごとにすべてのブレークポイントを挿入したり削除したりする必要があります)と、各ステップの後で式を評価することにあります。ブレークポイントの数と監視する式の数を最小限に抑えることを推奨します。
ビルドのクリーニング
古い.pdb ファイルによってデバッグが遅くなる場合は、クリーンビルドを試してください。
インクリメンタルリンクの無効化
インクリメンタル リンクはデバッグに影響を与える可能性があります。デバッガー・ログ・ビューに「Unable to verify checksum of module(モジュールのチェックサムを検証できません)」というメッセージが表示される場合は、インクリメンタルリンクを無効にしてください。
ビルド・システムとして CMake を使用する場合は、プロジェクトCMakeLists.txt ファイルに以下の行を追加してください:
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /INCREMENTAL:NO" )ビルド・システムとして qmake を使用している場合は、プロジェクト.pro ファイルに次の行を追加します:
QMAKE_LFLAGS_DEBUG += /INCREMENTAL:NO
Linux でデバッガーが実行中のプロセスにアタッチできない
GDBはptrace 、実行中のプロセスにアタッチします。Linuxディストリビューションによっては、これを許可していないため、既存のプロセスに直接アタッチするか、Qt Creator のRun in terminal オプションを使用しようとすると、すべての試みが停止します。
その理由はKernelHardening に記述されている。
しかし、この機能は簡単に無効にできるので、このセキュリティ対策の有用性は疑わしい。root 権限があれば、0 を/proc/sys/kernel/yama/ptrace_scope に書き込むことで一時的に、または/etc/sysctl.d/10-ptrace.conf の値を変更することで永続的に、この機能を無効にすることができる。昇格パーミッションがない場合でも、$QTCREATORDIR/lib/libptracepreload.so のようなprctl(0x59616d61, getppid(), 0, 0, 0); を呼び出すライブラリを LD_PRELOAD 環境に追加することで、後でこの機能を無効にすることができます。
ハウツー: デバッグ、デバッグ、デバッガ、デバッガ」も参照してください 。
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.