CLion 2026.2 Help

Constexpr デバッガー

Constexpr デバッガーは、特に constexpr および consteval コードにおけるコンパイル時の評価に関するインサイトを提供します。 これにより、コンパイラーの世界に留まり、評価中に何が起こっているかを正確に把握できます。

現在、Constexpr デバッガーで実行できる操作は次のとおりです。

  • static_assert(...) または constexpr 宣言子の横にある デバッグ ボタンをクリックしてガターからステップバイステップのデバッグを開始し、評価方法や失敗した理由を確認します。

  • 通常のデバッガーと 同じアクションステップインステップオーバー など)を使用します。 さらに、コンパイル時の逆ステップ実行機能である 後退 も使用できます。

  • コンパイラーが認識する内容(呼び出しスタック、ローカル、最後の戻り値、現在のインスタンス化のテンプレート引数)を確認します。

  • 変数の上にマウスを移動してその値を表示するか、 式の評価 を使用するか、呼び出しスタックからソースコードに移動します。

  • 定数評価がいつ、なぜ発生したかを特定できない場合は、コンテキスト全体をインスペクションします。

主なデバッグ機能

次のセクションでは、 constexpr コードをデバッグするときに実行できる重要なアクションの概要を示します。

デバッグを開始する

コード例として、コンパイル時のフィボナッチキャッシュの実装を考えてみましょう。

#include <array> template<std::size_t N> struct FibCache { std::array<int, N + 1> memo{}; constexpr FibCache() { memo[0] = 0; memo[1] = 1; for (std::size_t i = 2; i <= N; ++i) memo[i] = memo[i - 1] + memo[i - 2]; } constexpr int operator()(int n) const { return memo[n]; } }; constexpr int get_fibonacci(int n) { FibCache<8> cache; auto result = cache(n); return result; } constexpr int k = get_fibonacci(6); static_assert(get_fibonacci(6) == 8, "ok");
  1. アイコンを constexpr 宣言子または static_assert の横でクリックしてデバッグを開始します:

    デバッグを開始する
  2. 標準の ステップイン または ステップオーバー デバッガーアクションを使って式を評価します:

    ステップイン
  3. 後退 を使い、コンパイル時評価の各ステップを戻ります:

    後退する
  4. 状態をインスペクションします。

    • エディターで this->memo にマウスオーバーすると、構築中に配列がどのように埋められるかウォッチできます:

      メモをインスペクションする
    • Alt+F8 を押して式または型を評価します:

      式の評価
    • スレッド & 変数 ペインで thisi などのローカルや最近のリターンを確認します:

      変数のインスペクション
    • フレーム ペインでコールスタックを確認し、ソースコードに移動します:

      コールスタックをインスペクションする
  5. コンストラクターがすべてのフィボナッチ数を事前計算した後、 スレッド & 変数 ペインで結果を確認します:

    結果のインスペクション

コンパイル時のエラーを診断して修正する

  • たとえば、コードロジックの誤りなどにより評価が失敗した場合、CLion はエラーをハイライト表示します。 それにマウスオーバーすると、問題の説明が表示されるポップアップが現れます:

    エラーポップアップ

    エラーの原因と発生ステップが不明な場合は、 失敗するまで評価を実行する をクリックしてデバッグしてください。 Constexpr デバッガーは失敗した評価箇所で停止し、エラーメッセージとコンテキストを表示します。

  • コンパイル時に式を評価できない場合(たとえば、非 constexpr 関数が呼び出された場合)、CLion はエディターとデバッグの両方でエラーをハイライトします。

    非 constexpr 評価

    制限

    • ブレークポイントと Cursor まで実行 /Cursor まで強制実行 は constexpr 評価ではサポートされていません。

    • 一部の構文はまだ constexpr 評価ツールでサポートされていません。 進捗状況の確認や関連する問題への投票は YouTrack で行えます。

    2026 年 7 月 15 日