CLion 2026.2 Help

ステップフィルター

ステップフィルターを使うと、デバッガーで C および C++ コードをステップ実行する際に選択した関数をスキップできます。 ステップイン が通常はフィルターに一致する関数に入る場合、CLion はそれをステップオーバーします。 ステップイン強制で関数に入ることもできます。

ステップフィルターは LLDB と GDB のデバッガーバックエンドで動作し、 ステップイン のみに適用されます。 ステップオーバーステップアウト は影響を受けません。

ステップフィルターは、次の 3 つのソースからルールを取得し、この順序でチェックします:

  1. .natstepfilter および .natjmc ファイルで、開いているプロジェクトに属するもの。

  2. システム全体とユーザーごとの Visual Studio Visualizers ディレクトリ(Windows のみ)にある .natstepfilter および .natjmc ファイル。

  3. IDE 設定で管理する正規表現パターン(C++ 標準ライブラリ用の組み込みセットを含む)。

各ソースごとに、一致した最初のルールが有効になります。 したがって、 .natstepfilter ファイル内の StepInto ルールは、同じファイル内で後に記述されている NoStepInto ルールよりオーバーライドされます。また、プロジェクトファイルは常に IDE 設定からの正規表現パターンよりも優先されます。

ルールがマッチする前に、CLion はデバッガーによって報告される関数名を正規化します。cv 修飾子と参照修飾子が除去され、戻り値の型が外れ、匿名名前空間が隠され、パラメーターリストも外されます。 そのためパターンは、例えば std::vector<.*>::push_back のような修飾名のみにマッチさせ、パラメーターシグネチャーにはマッチさせないようにしてください。

CLion には、一般的な C++ 標準ライブラリのコード編集ヘルパー、スマートポインターアクセサー、libstdc++ の内部処理などをスキップする組み込み正規表現パターンのセットが含まれています。 このリストはプロジェクトごとに拡張や置換が可能です。

IDE でステップフィルターを設定する

設定 | ビルド、実行、デプロイ | デバッガー | ステップ実行 | C/C++ を開きます。

ステップフィルター設定ページ

このページには次のオプションがあります:

オプション

説明

構成ファイルからステップ実行ルールをロードする

有効化すると、デバッガーは開いているプロジェクトに属するすべての .natstepfilter および .natjmc ファイルを読み込み、Windows でも Visual Studio Visualizers ディレクトリに配置されたファイルも読み込みます。 チェックボックスを無効化すると、次回のデバッグセッションでプロジェクト同梱ファイルおよび Visual Studio 提供ファイルがともに無視されます。

関数にステップインしない

有効化すると、デバッガーはチェックボックスの下に一覧されている正規表現パターンを適用します。 各行は、関数の完全修飾名で一致します。 パラメーターリストと戻り値の型はマッチング前に除去されるため、 std::vector<.*>::push_back のようなパターンで十分です。引数リストをすべて記述する必要はありません。 ツールバーのボタンを使ってパターンを追加、編集、コピー、または削除できます。行のチェックボックスを解除すると、パターンは保持されますが適用されません。

.natstepfilter ファイルからのパターンは、ここで設定されたパターンよりも優先されます。そのため、このページで設定を変更しても、同じ関数がファイルベースのルールに含まれている場合は効果がありません。

ステップ実行診断

ステップフィルターの動作がデバッガーコンソールでどのように報告されるかを制御します:

  • 無効 — 診断出力なし。

  • エラーのみ (デフォルト)— 構成ファイルの不正や無効な正規表現などの問題を報告します。

  • 詳細 — さらに、読み込まれたすべてのファイルおよびルールにマッチした関数名も記録します。 パターンが期待通りに動作しない場合に便利です。

変更を保存するには、 変更を適用 をクリックします。 新しい設定は次回のデバッグセッションに反映されます。 実行中のセッションは、開始時のルールを維持します。

プロジェクトファイルでステップフィルターを設定する

.natstepfilter または .natjmc ファイルをプロジェクトに追加することで、ステップフィルタールールをバージョン管理下に置くことができます。 構成ファイルからステップ実行ルールをロードする が有効化されていれば、CLion はそれらを自動的に認識します。

.natstepfilter

.natstepfilter ファイルは Visual Studio ステップフィルター XML スキーマを使用します。 各 <Function> 要素には、 <Name> の正規表現と <Action> 、そして特定のライブラリにルールを制限する任意の <Module> の正規表現が含まれます。 CLion は2つのアクションをサポートしています:

  • NoStepIntoステップイン で関数をスキップします。

  • StepInto — 他のルールで関数がスキップされる場合でも、 ステップイン でその関数に入ることを強制します。 これは、以前の NoStepInto ルールで広範なパターンが適用されているコードの例外処理などに便利です。

Visual Studio の NonUserCode アクションは、デバッガーでエラーとして拒否されます。 .natjmc ファイルを使ってコードを non-user としてマークしてください。

<?xml version="1.0" encoding="utf-8"?> <StepFilter xmlns="http://schemas.microsoft.com/vstudio/debugger/natstepfilter/2010"> <Function> <Name>std::.*</Name> <Action>NoStepInto</Action> </Function> <Function> <Name>my::lib::detail::important_callback</Name> <Action>StepInto</Action> </Function> <Function> <Name>my::lib::detail::.*</Name> <Module>libmy\.so</Module> <Action>NoStepInto</Action> </Function> </StepFilter>

プロジェクト内にファイルを配置すると、IDE によってインデックスされます。 プロジェクトスコープ外のファイルは自動的に読み込まれません。

.natjmc

.natjmc ファイルは Visual Studio Just My Code スキーマを使用します。 CLion はそれらを追加のステップフィルターソースとして読み込み、含まれているモジュール、ファイル、関数を外部コードとして扱います:

<?xml version="1.0" encoding="utf-8"?> <NonUserCode xmlns="http://schemas.microsoft.com/vstudio/debugger/jmc/2015"> <Module Name="UnrealEditor-Core*"/> <File Name="*/ThirdParty/*"/> <Function Name="boost::.*" Module="libboost_system.so.1.83.0"/> </NonUserCode>

属性のマッチ条件は次のとおりです:

  • <Module Name="..."> および <File Name="..."> ではグロブパターンを使用できます。 * および ? は Visual Studio と同様に使用してください。

  • <Function Name="..."> は、正規化された関数名に対してマッチする正規表現です。

  • <Function Module="..."> はリテラル(大文字小文字を区別しない)モジュール名です。グロブや正規表現ではありません。 正確に読み込まれるモジュール名(例: libboost_system.so.1.83.0 または MyApp.exe )を指定してください。

  • <Module Company="..."> は現在フィルターとして有効です。CLion はバイナリに埋め込まれた会社メタデータを読み込まないため、 <Module> ルールが Company 属性を持つ場合は無視されます。 ルールを有効にしたい場合は、その属性を省略してください。

Visual Studio Visualizers ディレクトリ(Windows)

Windows では、CLion は Visual Studio が .natvis .natstepfilter .natjmc ファイル用に使用している同じディレクトリもスキャンします:

  • &percnt;VSINSTALLDIR&percnt;\Common7\Packages\Debugger\Visualizers — システムビジュアライザー(Unreal Engine 連携などのサードパーティ SDK 提供分を含む)。

  • &percnt;USERPROFILE&percnt;\Documents\Visual Studio <version>\Visualizers — ユーザービジュアライザー。

これらのフォルダーは、マシン上に Visual Studio のインストールが検出された場合のみスキャンされます。

予期しないステッピング動作の診断

ステップインで期待していた関数がフィルターされない場合は、 ステップ実行診断詳細 に切り替えてデバッグセッションを再実行してください。 その後、デバッガーコンソールに、どの構成ファイルが読み込まれたか、どのパターンが一致したか、どの関数名がマッチング用に正規化されたかが出力されます。 予期しない動作の一般的な原因は次のとおりです:

  • 正規表現のタイプミス。 テーブル内のパターンを編集すると、IDE が正規表現エラーをハイライト表示します。

  • 同じ .natstepfilter ファイル内で、先頭にある StepInto ルールが後方の NoStepInto ルールをオーバーライドしている。 より具体的なルールを先に並べてください。

  • プロジェクト内の .natstepfilter ファイルが IDE の設定パターンをオーバーライドしている。 冗長ログでは、一致するルールを提供したファイルのパスが表示されます。

  • デバッガーごとに異なる関数名。 CLion はマッチング前にほとんどの違い(修飾子、戻り値の型、パラメーターリスト、匿名名前空間)を正規化しますが、Linux や macOS の古い LLDB では戻り値の型が含まれる名前になることがあります。その場合は、 std::max<.* のような修飾名だけにマッチするパターンを書くようにしてください(int std::max<.*> ではなく)。

2026 年 7 月 15 日