式の評価
「Locals」ビューには表示されないグローバルデータにアクセスしたり、算術式や関数呼び出しの値を計算したりするには、「Expressions 」ビューの式評価機能を使用します。
たとえば、ソースファイルで `static int staticVar = 42; ` を定義し、評価済み式として `staticVar ` を追加した場合、デバッガがソースファイルで停止すると、ビューに42が表示されます。
また、式評価器を、ローカル変数ツリーの深い階層にある項目へのショートカットとして使用することもできます。

式評価子の追加
式評価子を追加するには、コードエディタから「Expressions 」ビューに式をドラッグします。
次の方法も利用できます:
- 「Expressions 」または「Locals 」ビュー内をダブルクリックします。
- コンテキストメニューから「Add New Expression Evaluator 」を選択します。
「New Evaluated Expression 」ダイアログに式を入力します:

評価された式のセットは、セッションに保存されます。
式評価器は、現在のフレームが変更されるたびに再評価されます。式で使用された関数は、副作用がある場合でも毎回呼び出されます。
注: 式の評価には 時間がかかるため、使用後は式評価器を削除してください。
JavaScript 式
QML デバッガでは、JavaScript 式を評価できます。
C および C++ 式
CDB、GDB、および LLDB は、単純な値やポインタからなる算術式など、単純な C および C++ 式の評価をサポートしています。
バックエンドや具体的な場所によっては、一部の関数呼び出しを評価できる場合があります。この点において、CDB は最も制限の多いバックエンドです。
関数呼び出し
関数は、デバッグ対象の実行ファイル、またはその実行ファイルが使用するライブラリに実際にコンパイルされている場合にのみ呼び出すことができます。標準コンテナのほとんどのoperator[] 実装のようなインライン関数は、通常利用できません。
注: 式に関数呼び出しが含まれている場合 、アプリケーションの状態の破損や、アプリケーションの権限を利用して任意のアクションを実行するなど、あらゆる事態が発生する可能性があります。
範囲指定構文
GDB または LLDB をバックエンドとして使用する場合、特別な範囲指定構文を使用して、1 つの式で複数の値を表示することができます。foo[a..b] という形式の副式は、個別に評価される一連の式foo[a], ..., foo[b] に分割されます。
複合変数
struct 型または class 型の複合変数を展開して、そのメンバを表示することができます。変数の値と型も確認できるため、オブジェクトデータの低レベルなレイアウトを調査・探索することができます。
最適化ビルド
GDB および LLDB、ひいてはQt Creator のデバッガも、Linux および macOS 上の最適化ビルドで動作します。最適化により、命令の順序が変更されたり、一部のローカル変数が削除されたりすることがあり、その結果、Locals およびExpressions のビューに予期しないデータが表示される場合があります。
GCC
GCCからのデバッグ情報には、変数が初期化された時点に関する十分な情報が含まれていません。そのため、Qt Creator は、ローカル変数の内容が実際のデータなのか、初期ノイズなのかを判別できません。QObject が未初期化のように見える場合、その値はnot in scope として報告されます。ただし、すべての未初期化オブジェクトが未初期化として認識されるわけではありません。
「式」ビューの操作
Expressions ビューを右クリックして、以下の操作を選択します:
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.