このページでは

式の評価

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++ 式の評価をサポートしています。

バックエンドと具体的な場所によっては、関数呼び出しも評価できる。CDBはこの点で最も制限されたバックエンドである。

関数呼び出し

関数は、デバッグされた実行ファイルまたは実行ファイルによって使用されるライブラリに実際にコンパイルされている場合にのみ呼び出すことができます。標準コンテナのほとんどの実装(operator[] )のようなインライン関数は、通常利用できません

注意: 式に関数呼び出しがある場合、アプリケーションの状態を破壊したり、アプリケーションの権限を使用して任意のアクションを実行したりするなど、あらゆることが起こり得ます。

範囲構文

GDBまたはLLDBをバックエンドとして使用する場合、1つの式で複数の値を表示するために特別な範囲構文を使用することができます。foo[a..b] 形式の部分式は、個別に評価される一連の式foo[a], ..., foo[b] に分割されます。

複合変数

struct 型または class 型の複合変数を展開すると、そのメンバを表示できます。変数の値と型も表示されるので、オブジェクト・データの低レベル・レイアウトを調べたり、たどることができます。

最適化されたビルド

GDB と LLDB、したがってQt Creator のデバッガは、Linux と macOS の最適化されたビルドでも動作します。最適化によって命令の順序が入れ替わったり、ローカル変数が削除されたりして、LocalsExpressions のビューに予期しないデータが表示されることがあります。

GCC

GCCからのデバッグ情報には、変数が初期化された時間に関する十分な情報が含まれていません。そのため、Qt Creator は、ローカル変数の内容が実データなのか初期ノイズなのかを見分けることができません。QObject が初期化されていないように見える場合、その値はnot in scope として報告されます。しかし、すべての未初期化オブジェクトがそうであると認識できるわけではありません。

式ビューのアクション

Expressions ビューを右クリックして、以下のアクションを選択します:

  • 式評価子の追加と削除
  • 値の表示形式の変更
  • ビューの内容の展開と折りたたみ
  • ビューの内容または式の値をクリップボードにコピーする
  • ビューの内容をエディタで開く
  • メモリエディタを開く
  • データのブレークポイントを設定する
  • デバッグヘルパーの使用
  • デバッグ時にビューにツールチップを表示/非表示する
  • ポインタを自動的に参照解除する
  • クラスと構造体のメンバーをアルファベット順に並べ替える
  • 表示にダイナミック・オブジェクト・タイプを使用する
  • デバッガ環境設定の設定

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.