ブレークポイント
ブレークポイントは、特定のポイントでプログラムの実行を一時停止する特別なマーカーです。これにより、プログラムの状態と動作を調べることができます。ブレークポイントは、たとえば、特定のコード行に到達したときにプログラムを一時停止するなどの単純なものから、追加の条件をチェックしたり、ログに書き込んだりするなどのより複雑なロジックを含むものまであります。
ブレークポイントは、一度設定すると、一時的なブレークポイントを除き、明示的に削除するまでプロジェクト内に残ります。
ブレークポイントの種類
CLion では、次のタイプのブレークポイントを使用できます。
行ブレークポイント : ブレークポイントが設定されたコード行に到達したらプログラムを中断します。このタイプのブレークポイントは、実行可能なコード行に設定できます。
例外ブレークポイント : 指定された例外がスローされたときにプログラムを一時停止します。これらは例外条件にグローバルに適用され、特定のソースコード参照を必要としません。
記号的なブレークポイント : 特定の関数またはメソッドが実行されたときにプログラムを中断します。
行ブレークポイントのステータス
デバッグセッションがまだ開始されていない場合、すべての行ブレークポイントは同じ方法でマークされます。
![保留中のブレークポイント pending breakpoint](https://resources.jetbrains.com/help/img/idea/2024.1/cl_breakpoint_set.png)
デバッグセッション中に、CLion はブレークポイントステータスを検出し、それに応じてマーカーを変更します。
行ブレークポイントは、提供されたデバッグシンボルを使用して、GDB または LLDB デバッガーによって正常に解決されます。このようなブレークポイントは、実行中にヒットする可能性があります。
行ブレークポイントは無効です。つまり、GDB または LLDB で解決できず、ヒットすることはありません。これは、ブレークポイントが実行可能コード外にあるか、一部のデバッグシンボルが欠落している場合に発生します。CLion はそのような状況を正確に検出し、その場でアイコンを更新します(たとえば、適切なデバッグシンボルをロードするとステータスが変わります)。
ブレークポイントの設定
行ブレークポイントを設定する
ブレークポイントを設定するコードの実行可能な行でガターをクリックします。または、行にキャレットを置き、Ctrl+F8 を押します。
逆アセンブリビューでは、ソースコードと同じ方法でブレークポイントを設定できます。分解のブレークポイントを参照してください。
例外ブレークポイントを設定する
Ctrl+Shift+F8 を押すか、メインメニューから
を選択します。ブレークポイントダイアログで、Alt+Insert を押すか
をクリックし、例外ブレークポイントまたは JavaScript 例外ブレークポイントを選択します。
シンボリックブレークポイントを設定する
デバッグツールウィンドウの左側のブレークポイントの表示
をクリックするか、Ctrl+Shift+F8 を押します。
ブレークポイントダイアログで、Alt+Insert を押すか
をクリックし、シンボリックブレークポイントを選択します。
シンボル名を指定し、このブレークポイントをすべてのモジュールでヒットするか、特定のモジュールのみでヒットするかを選択します。
ブレークポイントの管理
ブレークポイントを除去する
例外以外のブレークポイントの場合: ガターのブレークポイントをクリックします。
すべてのブレークポイントの場合: メインメニューで除去 Delete をクリックします。
Ctrl+Shift+F8 に移動し、ブレークポイントを選択して、
誤ってブレークポイントを削除してそのパラメーターを失うのを防ぐために、エディターにドラッグするか、マウスの中央ボタンをクリックして、ブレークポイントを削除することを選択できます。これを行うには、エディターにドラッグまたはマウスの中央ボタンをクリックを選択します。ブレークポイントをクリックすると、それが有効または無効になります。
に移動してブレークポイントのミュート
ブレークポイントでしばらく停止する必要がない場合は、ミュートできます。これにより、デバッガーセッションを移動することなく、通常のプログラム操作を再開できます。その後、ブレークポイントのミュートを解除して、デバッグを続行できます。
デバッグツールウィンドウのツールバーのブレークポイントのミュートボタン
をクリックします。
ブレークポイントを使用可能 / 使用不可にする
ブレークポイントを削除すると、その内部構成は失われます。パラメーターを失うことなく個々のブレークポイントを一時的にオフにするには、無効にすることができます。
非例外ブレークポイントの場合: 右クリックして、必要に応じて有効オプションを設定します。ブレークポイントの削除が割り当てられていない場合は、マウスの中央ボタンで切り替えることもできます。
すべてのブレークポイントの場合: 実行 | ブレークポイントの表示 Ctrl+Shift+F8 をクリックして、リストのブレークポイントをオン / オフにします。
ブレークポイントの移動 / コピー
ブレークポイントを移動するには、それを別の行にドラッグします。
ブレークポイントをコピーするには、Ctrl を押したまま、ブレークポイントを別の行にドラッグします。これにより、宛先に同じパラメーターを持つブレークポイントが作成されます。
設定されたすべてのブレークポイントを表示
ブックマークツールウィンドウですべてのブレークポイントのリストを表示できます。ブレークポイントは、コード内に配置すると、ツールウィンドウの専用リストに自動的に追加されます。
メインメニューで、ブレークポイントリストを展開します。
に移動するか、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 ステートメントがない場合、結果はコードの最後の行から取得されます。最後の行は式である必要はなく、リテラルでもかまいません。これを使用して、カスタムメッセージを生成したり、プログラムの実行中にいくつかの値を追跡したりできます。
式を評価するときは、プログラムの動作や結果に影響を与える可能性があるため、副作用が発生する可能性があることを必ず認識してください。
一度ヒットしたら除去する
ブレークポイントを 1 回ヒットした後、プロジェクトから削除するかどうかを指定します。
次のブレークポイントに到達するまで無効にする
次のブレークポイントに到達するまで無効にするボックスでブレークポイントを選択すると、現在のブレークポイントのトリガーとして機能します。これにより、指定したブレークポイントに到達するまで現在のブレークポイントが無効になります。
これが発生した後に再び無効にするか、有効のままにするかを選択することもできます。
このオプションは、特定の条件下または特定のアクションの後でのみプログラムを中断する必要がある場合に役立ちます。この場合、通常、トリガーブレークポイントはプログラムの実行を停止するために必要ではなく、non-suspending になります。
投げ / キャッチ
例外ブレークポイントの場合、例外がスローされたとき、キャッチされたとき、その両方の場合にプログラムを一時停止することを選択できます。スローされたときおよび捕らえられたときチェックボックスを使用します。
生産性のヒント
- デバッグ印刷にブレークポイントを使用する
コードに出力ステートメントを挿入する代わりに、non-suspending ログブレークポイント(他のデバッガーではウォッチポイントと呼ばれることもあります)を使用します。これにより、デバッグログメッセージを処理する、より柔軟で集中化された方法が提供されます。
- ロギングブレークポイントをより迅速に設定する
non-suspending ロギングブレークポイントを設定するには、Shift を押しながらガターをクリックします。これはプログラムの実行を中断せず、代わりに
Breakpoint reached
のようなメッセージを記録します。エディターの前にある式をログに記録する場合は、Shift を押しながらガターをクリックする前に、式を選択します。- ブレークポイントの説明を追加する
プロジェクトに多数のブレークポイントがある場合、検索を容易にするためにブレークポイントに説明を追加できます。これを行うには、ブレークポイントダイアログ Ctrl+Shift+F8 のブレークポイントを右クリックし、メニューから説明の編集を選択します。これで、ブレークポイント名の入力を開始すると、フォーカスが取得されます。
- ソースに移動
ブレークポイントダイアログから選択したブレークポイントが設定されているコード行に移動するには、F4 を押します。
関連ページ:
![](https://resources.jetbrains.com/help/img/idea/2024.1/cl_disasm_ondemand_framesmenu.png)
逆アセンブルされたコードをデバッグする
デバッグセッション中に、逆アセンブルされたコードを開くことができますソースが利用可能な場合、任意のフレームに対してオンデマンド、ソースが利用できないときに強制的にそこに踏み込むこと、フレームの分解ビューを開くデバッグツールウィンドウで目的のフレームを右クリックし、逆アセンブルを選択します。逆アセンブリビューがソースコードと並んで開きます。開くと、分解ビューは現在選択されているフレームと同期したままになります。フレームが切り替わると、エディターと逆アセンブリビューの両方が実行ポイントまでスクロール...
![](https://resources.jetbrains.com/help/img/idea/2024.1/cl_add_mnemonic_bookmark_select_identifier.png)
ブックマーク
大規模なプロジェクトで作業する場合、ファイルやフォルダーの検索には時間がかかる場合があります。そのような場合、CLion はブックマークを備えています。必要なコード行をブックマークして、見つけやすくすることができます。他のプロジェクトアイテムよりも頻繁に必要なプロジェクトファイルとフォルダーをブックマークすることもできます。すべてのブックマークはブックマークツールウィンドウのリストにグループ化されており、メインメニューからを選択するか、を押すと開くことができます。ツールウィンドウには、コードに...
![](https://resources.jetbrains.com/help/img/idea/2024.1/cl_debugger_stepout_returnvalue.png)
ステップスルー
CLion は、さまざまなデバッグ戦略のための一連のステップアクションを提供します(たとえば、次の行に直接移動する必要があるか、途中で呼び出された関数を入力する必要があるかなど)。ステップアクションは、デバッガーウィンドウのツールバーとメニューにあります。ステップオーバー:現在の行に関数呼び出しが含まれている場合でも、現在の行をステップオーバーして、次の行に移動します。呼び出しはスキップされ、発信者の次の行に直接移動します。ステップオーバーボタンをクリックするか、を押します。スキップされたメ
![](https://resources.jetbrains.com/help/img/idea/2024.1/cl_set_execution_shortcut.png)
実行ポイントを設定する
実行ポイントの設定アクションを使用すると、デバッグセッション中にエディター内の任意のコード行に移動して、実行ポイントを設定し、その間にある他のすべてのコマンドをスキップできます。このアクションは、線形実行パスと非線形実行パスの両方で機能します。これを使用して、ループを中断してスキップしたり、句式またはステートメントで別のブランチを選択したりできます。例: このアクションは、デバッグセッションを再開せずに別のブランチを確認したい場合に便利です。セット実行ポイントを呼び出す次のオプションのいずれかを...
![](https://resources.jetbrains.com/help/img/idea/2024.1/cl_addwatchpoint.png)
監視ポイント
ウォッチポイント (データブレークポイントと呼ばれることもあります) は、プログラムの実行全体を通じて特定の変数とその動作に焦点を当てる必要がある場合に役立ちます。プログラムが監視中のブレークポイントにアクセスするたびに、CLion は実行を一時停止するか、コンソールにログを記録します。ウォッチポイントを設定する変数または式を選択し、右クリックして監視ポイントの追加を選択します。ポップアップでウォッチポイントを構成します。追加のプロパティにアクセスするには、さらにをクリックするか、メインメニュー...