• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    function
    <debugging>

    std::breakpoint_if_debugging

    namespace std {
      void breakpoint_if_debugging() noexcept; // (1) C++26
    }
    

    概要

    デバッガ実行時のみブレークポイントを設置する。

    この関数は条件付きブレークポイントであり、デバッガがプログラムを監視中であればプログラムを一時停止 (ブレーク) するが、そうでなければ何もしないよう動作する。

    効果

    以下と等価:

    例外

    投げない

    備考

    • 実装としては、生成されるコードがプラットフォームに対して可能な限り最小になるように最適化することが期待される。例として、x86ターゲット環境ではINT3命令をひとつだけ生成することが期待される

    #include <print>
    #include <debugging>
    #include <cmath>
    
    // なんらかの処理
    double g(double a, double b) {
      return a / b;
    }
    
    double f(double a, double b) {
      double ret = g(a, b);
      if (std::isnan(ret) || std::isinf(ret)) {
        // 演算結果でNaNかinfが発生したらブレークし、
        // デバッガでパラメータ (ローカル変数) などを確認する
        std::breakpoint_if_debugging();
      }
      return ret;
    }
    
    int main() {
      double ret = f(2.0, 0.0);
      std::println("{}", ret);
    }
    

    出力例

    inf
    

    バージョン

    言語

    • C++26

    処理系

    参照