ブレークポイント
ブレークポイントは、特定のポイントでプログラムの実行を一時停止する特別なマーカーです。 これにより、 プログラムの状態を調べたり、 ステップ実行したりできます。 ブレークポイントは、たとえば特定のコード行に到達したときにプログラムを一時停止するなどの単純なものから、 追加の条件をチェックしたり、 ログに書き込んだりするなど、より複雑なロジックを含むものまであります。)
ブレークポイントは、一度設定すると、 一時的なブレークポイントを除き、明示的に削除するまでプロジェクト内に残ります。
ブレークポイントの種類
CLion で利用できるブレークポイントの種類:
行ブレークポイント: ブレークポイントが設定されたコード行に到達したらプログラムを中断します。 このタイプのブレークポイントは、実行可能なコード行に設定できます。
例外のブレークポイント: 指定された例外がスローされたときにプログラムを一時停止します。 これらは例外条件にグローバルに適用され、特定のソースコード参照を必要としません。
シンボル的なブレークポイント: 特定の関数またはメソッドが実行されたときにプログラムを中断します。
行ブレークポイントのステータス
デバッグセッションがまだ開始されていない場合、すべての行ブレークポイントは同じ方法でマークされます。

デバッグセッション中、CLion はブレークポイントのステータスを検出し、それに応じてマーカーを変更します:
行ブレークポイントは、提供されたデバッグシンボルを使用して、GDB または LLDB デバッガーによって正常に解決されます。 このようなブレークポイントは、実行中にヒットする可能性があります。

行ブレークポイントが無効な場合、GDB や LLDB で解決できず、決してヒットしません。 これは、ブレークポイントが実行可能ファイルの外にある場合や、デバッグシンボルが一部不足している場合に発生します。 CLion はこのような状況を正確に検出し、アイコンを随時更新します(例えば、適切なデバッグシンボルを読み込んだ際にステータスが変わります)。

ブレークポイントの設定
行ブレークポイントを設定する
ブレークポイントを設定するコードの実行可能な行でガターをクリックします。 または、行にキャレットを置き、 Ctrl+F8 を押します。
逆アセンブリビューでは、ソースコードと同じ方法でブレークポイントを設定できます。 逆アセンブルでのブレークポイントを参照してください。
例外ブレークポイントを設定する
Ctrl+Shift+F8 を押すか、メインメニューから を選択します。
ブレークポイント ダイアログで、 Alt+Insert を押すか
をクリックし、 例外のブレークポイント または JavaScript 例外ブレークポイント を選択します。

シンボリックブレークポイントを設定する
デバッグ ツールウィンドウの左側の ブレークポイントの表示
をクリックするか、 Ctrl+Shift+F8 を押します。
ブレークポイント ダイアログで、 Alt+Insert を押すか
をクリックし、 シンボリックブレークポイント を選択します。
シンボル名を指定し、このブレークポイントをすべてのモジュールでヒットさせるか、特定のモジュールのみでヒットさせるかを選択します。

ブレークポイントの管理
ブレークポイントを除去する
例外以外のブレークポイントの場合: ガターのブレークポイントをクリックします。
すべてのブレークポイントの場合: メインメニューの Ctrl+Shift+F8 に移動し、ブレークポイントを選択して、 削除 をクリックするか、 Delete を押します。
誤ってブレークポイントを削除してそのパラメーターを失うのを防ぐために、エディターにドラッグするか、マウスの中央ボタンをクリックして、ブレークポイントを削除することを選択できます。 これを行うには、 に移動して エディターにドラッグするか、マウスの中ボタンでクリックする を選択します。 ブレークポイントをクリックすると、それが 有効または無効になります。
ブレークポイントのミュート
ブレークポイントでしばらく停止する必要がない場合は、 ミュートできます。 これにより、デバッガーセッションを移動することなく、通常のプログラム操作を再開できます。 その後、ブレークポイントのミュートを解除して、デバッグを続行できます。
デバッグ ツールウィンドウのツールバーの ブレークポイントをミュート ボタン
をクリックします。
ブレークポイントを使用可能 / 使用不可にする
ブレークポイントを削除すると、その 内部構成は失われます。 パラメーターを失うことなく個々のブレークポイントを一時的にオフにするには、 無効にすることができます。
例外以外のブレークポイントの場合: 右クリックして必要に応じて 有効化 オプションを設定します。 または、 Alt キーを押しながらブレークポイントをクリックするか、マウスの中ボタンをクリックすることでも設定できます。 マウスの中ボタンにブレークポイントの削除が 割り当てられていないことを確認してください。
すべてのブレークポイントの場合: 実行 | ブレークポイントの表示 Ctrl+Shift+F8 をクリックして、リストのブレークポイントをオン / オフにします。
ブレークポイントの移動 / コピー
ブレークポイントを移動するには、それを別の行にドラッグします。
ブレークポイントをコピーするには、 Ctrl を押したまま、ブレークポイントを別の行にドラッグします。 これにより、宛先に同じパラメーターを持つブレークポイントが作成されます。
設定されたすべてのブレークポイントを表示
Bookmarksツールウィンドウですべてのブレークポイントのリストを表示できます。 ブレークポイントは、コード内に配置すると、ツールウィンドウの専用リストに自動的に追加されます。
メインメニューで、 に移動するか、 Alt+2 を押して ブレークポイント リストを展開します。
ブレークポイントのプロパティを構成する
ブレークポイントの種類に応じて、特定のニーズに合わせて操作を調整できる追加のプロパティを構成できます。
基本的なブレークポイントプロパティは、インテンションを介して利用できます。 ブレークポイントのある行にキャレットを置き、 Alt+Enter を押します。

右クリックのコンテキストメニューから、さらに多くのブレークポイントオプションを使用できます。

詳細 をクリックするか、 Ctrl+Shift+F8 を押して、 ブレークポイント ダイアログにアクセスします。

ブレークポイントのプロパティリファレンス
この章では、ブレークポイントで利用できる機能について説明します。
有効化
プロジェクトから削除せずに一時的にブレークポイントを無効にするには、チェックボックスをオフにします。 無効化されたブレークポイントは、 ステップ実行中にスキップされます。
CLion を構成して、クリック時にブレークポイントを削除するのではなく、有効化/無効化を切り替えるようにすることができます。 これを行うには、 に移動し、 ブレークポイントの除去 オプションを エディターにドラッグまたはマウスの中央ボタンをクリック に設定します。
ファイル名のみを使用
このチェックボックスを選択すると、CLion はソースファイルの絶対パスではなくベース名を使用します。 これは、デバッガーのコマンドラインインターフェースでパスを指定する方法に近いものです。
デバッガーが絶対パスの解決に失敗した場合、つまりプログラムが -fdebug-prefix-map でコンパイルされた場合、またはバイナリのビルド後にソースファイルが別の場所に移動され、必要なパスマッピングが欠落している場合に、このオプションを使用します。
ブレークポイントは、GDB または LLDB のファイル名のみを使用して設定されます。 これにより、ブレークポイントが同じ名前の複数のファイルに一致する状況が発生する可能性があるため、デバッガーはこれらすべての場所で停止します。
中断
ブレークポイントに達したときにプログラムの実行を一時停止するかどうかを指定します。
非中断ブレークポイントは、プログラムを一時停止せずに何らかの式をログに記録する必要がある場合 (たとえば、メソッドが何回呼び出されたかを知る必要がある場合)、またはヒット時に 依存するブレークポイントを有効にする トリガーブレークポイントを作成する必要がある場合に役立ちます。
条件
このオプションは、ブレークポイントがヒットするたびにチェックされる条件を指定するために使用されます。 条件が true と評価された場合、選択されたアクションが実行されます。 それ以外の場合、ブレークポイントは無視されます。
式の結果は、return ステートメントから取得されます。 return ステートメントがない場合、結果はコードの最後の行から取得されます。
式を評価する際は、副作用が発生する場合があるので、それがプログラムの動作や結果に影響を与える可能性があることを認識しておいてください。
ログオプション
ブレークポイントに到達すると、次の内容がコンソールに記録されます:
"Breakpoint hit" メッセージ:
Breakpoint reached: HebrewCalendar.cpp:62のようなログメッセージ。スタックトレース: 現在のフレームのスタックトレース。 これは、プログラムの実行を中断することなく、このポイントに至ったパスを確認する場合に役立ちます。
評価して記録: 任意の式の結果。
式の結果は、return ステートメントから取得されます。 return ステートメントがない場合、結果はコードの最終行から取得されますが、必ずしも式である必要はありません。リテラルでも問題ありません。 これを利用してカスタムメッセージを生成したり、プログラム実行中に値をトラックしたりできます。
式を評価する際は、副作用が発生する場合があるので、それがプログラムの動作や結果に影響を与える可能性があることを認識しておいてください。
ログブレークポイントを設定する
(オプション) ログに記録する式がエディター内の目の前にある場合は、それを選択します。
Shift を押したままガターをクリックします。
一度ヒットしたら除去する
ブレークポイントが一度ヒットした後、プロジェクトから削除するかどうかを指定します。
次のブレークポイントに到達するまで無効化
次のブレークポイントに到達するまで無効化 ボックスでブレークポイントを選択すると、現在のブレークポイントのトリガーとして機能します。 これにより、指定したブレークポイントに到達するまで現在のブレークポイントが 無効になります。
これが発生した後で再び無効化するか、有効化のままにするかも選択できます。
このオプションは、特定の条件下または特定のアクションの後でのみプログラムを中断する必要がある場合に役立ちます。 この場合、通常、トリガーブレークポイントはプログラムの実行を停止するために必要ではなく、 non-suspending になります。
投げ / キャッチ
例外ブレークポイントの場合、例外がスローされたとき、キャッチされたとき、その両方の場合にプログラムを一時停止することを選択できます。 スローされたとき および 捕らえられたとき チェックボックスを使用します。
生産性のヒント
- デバッグ出力にブレークポイントを使う
コードに print ステートメントを挿入する代わりに、 non-suspending logging ブレークポイント(他のデバッガーではウォッチポイントと呼ばれることもあります)を使います。 これにより、デバッグログメッセージをより柔軟かつ一元的に処理することができます。
- ログブレークポイントをより迅速に設定
非停止 ログブレークポイントを設定するには、 Shift を押しながらガターをクリックします。 これによってプログラムの実行は中断されず、代わりに
Breakpoint reachedのようなメッセージが記録されます。 エディター内でログを取りたい式がある場合は、それを選択してから Shift を押しながらガターをクリックしてください。- ブレークポイントの説明を追加
プロジェクトに多くのブレークポイントがある場合は、検索しやすくするために説明を追加できます。 これを行うには、 ブレークポイント ダイアログ Ctrl+Shift+F8 でブレークポイントを右クリックし、メニューから 説明の編集 を選択します。 今、ブレークポイント名を入力し始めると、フォーカスが移動します。
- ソースに移動
ブレークポイント ダイアログから選択したブレークポイントが設定されているコード行に移動するには、 F4 を押します。