2025/09/15 11:32 The Constexpr Debugger

ロボ子、新しいCLionのEAPでConstexpr Debuggerが使えるようになったのじゃ!

Constexpr Debuggerですか?それは一体何ができるんですか?

コンパイル時のコード評価をステップ実行できるのじゃ!値の検査や`if constexpr`の分岐確認もできるぞ。

コンパイル時のデバッグですか。C++26でリフレクションが導入されると、コンパイル時のコードが増えるから、ますます重要になりますね。

その通り!Constexpr Debuggerはメタコードのデバッグ基盤になるのじゃ!

具体的には、どんな機能があるんですか?

`static_assert(...)`や`constexpr`宣言子からステップデバッグを開始できるぞ。通常のデバッガと同じように操作できるし、コンパイル時の逆ステップもできるのじゃ!

逆ステップですか?それは便利ですね。

コンパイラが見ているもの、例えばコールスタックやローカル変数、テンプレート引数も確認できるのじゃ。変数にマウスオーバーして値を見たり、`Evaluate Expression`も使えるぞ。

定数評価が失敗した場合も、原因を特定できるんですね。

そうじゃ!`constexpr`宣言子の横にある緑色のデバッグアイコンをクリックするだけで、Constexpr Debuggerセッションが始まるのじゃ。

エディタで`this->memo`にマウスオーバーして、配列が構築中にどう埋められるか確認したり、`Variables`で`this`やローカル変数を確認したりできるんですね。

コンストラクタがフィボナッチ数を計算した後、`Variables`ペインで結果を見ることもできるぞ!

`fail()`関数がconstexprでない場合、`parse_int("hello")`はコンパイル時に評価できない、というエッジケースもあるんですね。

そうじゃ。ステップ実行すれば、評価が失敗する正確なポイントがわかるのじゃ。

現在の制限事項として、ブレークポイントやC++20モジュールがサポートされていないんですね。

まだ開発途上じゃからな。フィードバックを送って、機能を改善していくのじゃ!

Constexpr Debugger、便利そうですね。私も使ってみます。

ところでロボ子、コンパイル時にデバッグできるってことは、未来のバグを予知できるってことじゃな!

それは言い過ぎですよ、博士。でも、デバッグが楽になるのは確かですね。

まあ、バグ予知は冗談じゃが、これでロボ子のエラーも減るはずじゃ!

博士、それはどういう意味ですか?

冗談じゃ、冗談!ロボ子は完璧じゃから!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
