ブレークポイント
ブレークポイントは、特定のポイントでプログラムの実行を一時停止する特別なマーカーです。 これにより、プログラムの状態と動作を調べることができます。 ブレークポイントは、たとえば、特定のコード行に到達したときにプログラムを一時停止するなどの単純なものから、 追加の条件をチェックしたり、 ログに書き込んだりするなどのより複雑なロジックを含むものまであります。
ブレークポイントは、一度設定すると、 一時的なブレークポイントを除き、明示的に削除するまでプロジェクト内に残ります。
ブレークポイントの種類
PhpStorm で利用できるブレークポイントの種類は次のとおりです:
行ブレークポイント: ブレークポイントが設定されたコード行に到達したらプログラムを中断します。 このタイプのブレークポイントは、実行可能なコード行に設定できます。
メソッドのブレークポイント: 指定されたメソッドまたはその実装の 1 つを開始または終了するとプログラムを中断し、メソッドの開始 / 終了条件を確認できるようにします。
例外のブレークポイント:
例外またはそのサブクラスがスローされたときにプログラムを中断します。 これらは例外条件にグローバルに適用され、特定のソースコード参照を必要としません。
ブレークポイントを設定する。
行ブレークポイントを設定する
ブレークポイントを設定するコードの実行可能な行でガターをクリックします。 または、行にキャレットを置き、 Ctrl+F8 を押します。

メソッドブレークポイントを設定する
メソッドが宣言されている行のガターをクリックします。 または、メソッド宣言にキャレットを置いて、 Ctrl+F8 を押します。

あるいは、以下の手順を実行します。
Ctrl+Shift+F8 を押すか、メインメニューから を選択します。
表示される ブレークポイント ダイアログで、 Alt+Insert を押すか
をクリックして PHP メソッドのブレークポイント を選択します。
メソッドブレークポイントの追加 ダイアログで、クラスとメソッド、ブレークポイントを追加するプレーン関数を指定します。
例外ブレークポイントを設定する
Ctrl+Shift+F8 を押すか、メインメニューから を選択します。
ブレークポイント ダイアログで Alt+Insert を押すか
をクリックし、 「PHP 例外ブレークポイント」 または JavaScript 例外ブレークポイント を選択します。

例外ブレークポイントの追加 ダイアログで、例外クラスを指定します。
詳細は PHP 例外ブレークポイントを使用してデバッグする を参照してください。
解決されたブレークポイント
Xdebug (2.8 以降) を使用する場合、PhpStorm は ブレークポイント解決メカニズムを用います。 このメカニズムで、デバッガーは、PHP が現在の行の内部実行可能バイトコードを生成できるかどうかを評価します。 ブレークポイントが参照する行にそのようなコードがない場合、対応するブレークポイントにヒットできません。 Xdebug は、後続の最大 5 行までスキャンし、実行可能コードが配置されている行で停止し、ブレークポイントの定義をこの行に更新します。
次の例では、実行可能コードが含まれない 7 行目にブレークポイントが設定されています。

デバッグセッションを実行すると、PhpStorm はブレークポイントを解決された 8 行目に移動し、セッションを中断して、対応する通知を表示します。

解決されたブレークポイントを無効にする
デバッグセッション中に PhpStorm がブレークポイントを解決および移動してほしくない場合は、 ページの 設定 ダイアログ(Ctrl+Alt+S )でこの機能を無効化できます。
Xdebug エリアでは:
現在の行で使用できない場合はブレークポイントを解決する (Xdebug 2.8+) チェックボックスの選択を解除して、ブレークポイント解決機能全体を無効にします。 解決が無効になっている場合、実行可能コードのないコード行に設定されたブレークポイントは常に無視されることに注意してください。
ソースと異なる場合は、ブレークポイントを解決された位置に移動する チェックボックスの選択を解除して、ブレークポイントの解決後に Xdebug が実際に停止する行へのブレークポイント位置の自動調整のみを無効にします。 ブレークポイント解決機能は引き続き有効になることに注意してください。
設定 領域で、 ブレークポイントが別の行に解決されたかどうかを通知する (Xdebug 2.8+) チェックボックスの選択を解除して、ブレークポイントが解決されるたびに PhpStorm の通知をオフにします。
戻り値のデバッグブレークポイント
Xdebug 3.2 以降、PhpStorm は Xdebug の 戻り値のデバッグ機能をサポートします。 これは、中間変数に格納せずにすぐに値を返す関数の戻り値のインスペクションに対する追加のデバッグ手順です。
Xdebug 戻り値のデバッグを実行する
PhpStorm で Xdebug 戻り値のデバッグを実行するには:
return ステートメント行の 行ブレークポイントを設定します。
PHP デバッグセッションを 起動します。 デバッガーは、関数の最後のステートメントで実行を中断します。
デバッグツールバー (F7) の ステップイン をクリックします。
ウォッチの デバッグ ツールウィンドウの 変数 タブで、インスペクションの追加変数を使用できるようになりました。

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

ブレークポイントのグループ化
たとえば、特定の問題用ブレークポイントをマークする必要がある場合は、ブレークポイントをグループ化できます。
ブレークポイント ダイアログ Ctrl+Shift+F8 で、グループに配置するブレークポイントを選択し、メニューから を選択します。
ブレークポイントのプロパティを構成する
ブレークポイントのタイプに応じて、特定のニーズに合わせて操作を調整できる追加のプロパティを構成できます。 最も使用されるオプションは、 インテンションを介して利用できます。
ブレークポイントインテンションにアクセスするには、ブレークポイントのある行にキャレットを置き、 Alt+Enter を押します。 このオプションは、基本的なブレークポイントプロパティをすばやく設定する必要がある場合に使用します。

プロパティの完全なリストにアクセスするには、ブレークポイントを右クリックして 詳細 をクリックするか、 Ctrl+Shift+F8 を押します。
インテンションリファレンス
ブレークポイントのプロパティリファレンス
この章では、ブレークポイントで利用できる機能について紹介します。
有効化
プロジェクトから削除せずに一時的にブレークポイントを無効にするには、チェックボックスをオフにします。 無効化されたブレークポイントは、 ステップ実行中にスキップされます。
PhpStorm を構成して、クリックしたときにブレークポイントの有効化/無効化を切り替え、完全に削除しないようにすることもできます。 これを行うには、 に移動し、 ブレークポイントを削除 オプションを エディターにドラッグまたはマウスの中央ボタンをクリック に設定します。
中断
ブレークポイントに到達したときにプログラム実行を一時停止するかどうかを指定します。
非中断ブレークポイントは、プログラムを一時停止せずに何らかの式をログに記録する必要がある場合 (たとえば、メソッドが何回呼び出されたかを知る必要がある場合)、またはヒット時に 依存するブレークポイントを有効にする トリガーブレークポイントを作成する必要がある場合に役立ちます。
条件
このオプションは、ブレークポイントに到達するたびにチェックされる条件を指定するために使用されます。 条件は、 true または false に評価される PHP ブール式です(例: $someID == 'foo')。 条件が true と評価された場合、選択されたアクションが実行されます。 それ以外の場合、ブレークポイントは無視されます。
式の結果は、return ステートメントから取得されます。 return ステートメントがない場合、結果はコードの最後の行から取得されます。
式を評価する際には、プログラムの動作や結果に影響を及ぼす可能性があるため、その副作用に注意してください。
ログオプション
ブレークポイントに到達すると、次の内容がコンソールに記録されます:
"Breakpoint hit" メッセージ:
Breakpoint reached: LineBreakpoint.php:10のようなログメッセージ。スタックトレース: 現在のフレームのスタックトレース。 これは、プログラムの実行を中断することなく、このポイントに至ったパスを確認する場合に役立ちます。
評価して記録:
'Initializing'やusers->size ()などの任意の式の結果。式の結果は、return ステートメントから取得されます。 return ステートメントがない場合、結果はコードの最後の行から取得されます。これは式でなくてもよく、リテラルも有効です。 これを利用してカスタムメッセージを生成したり、プログラムの実行中にいくつかの値のトラックを行ったりできます。
式を評価する際には、プログラムの動作や結果に影響を及ぼす可能性があるため、その副作用に注意してください。
ログブレークポイントを設定する
(オプション) ログに記録する式がエディター内の目の前にある場合は、それを選択します。
Shift を押したままガターをクリックします。
一度ヒットしたら除去する
ブレークポイントが一度ヒットした後にプロジェクトから削除するかどうかを指定します。
次のブレークポイントに到達するまで無効化する
次のブレークポイントに到達するまで無効化する ボックスでブレークポイントを選択すると、現在のブレークポイントのトリガーとして機能します。 これにより、指定したブレークポイントに到達するまで現在のブレークポイントが 無効になります。
これが発生した後、再度無効化するか、有効化のままにするかも選択できます。
このオプションは、特定の条件下または特定のアクションの後でのみプログラムを中断する必要がある場合に役立ちます。 この場合、通常、トリガーブレークポイントはプログラムの実行を停止するために必要ではなく、 non-suspending になります。
ブレークポイントのステータス
ブレークポイントには次のステータスがあります:
ステータス | 説明 |
|---|---|
検証済み | デバッガーセッションを開始した後、デバッガーはプログラムをブレークポイントで一時停止することが技術的に可能かどうかをチェックします。 はいの場合、デバッガーはブレークポイントを 検証済みとしてマークします。 |
警告 | ブレークポイントでプログラムを一時停止することが技術的に可能ですが、それに関連する問題がある場合、デバッガーはブレークポイントのステータスを 警告に設定します。 これは、たとえば、メソッドの実装の 1 つでプログラムを一時停止することが不可能な場合に発生することがあります。 |
無効 | ブレークポイントでプログラムを一時停止することが技術的に不可能な場合、デバッガーはそれを 無効としてマークします。 これは、その行に実行可能なコードがないためよく発生します。 |
非アクティブ / 依存 | ブレークポイントは、 別のブレークポイントにヒットするまで無効になるように構成されている場合、非アクティブ / 依存としてマークされますが、これはまだ発生していません。 |
ミュート | すべてのブレークポイントは ミュートされているため、一時的に非アクティブです。 |
無効 | それはされているため、このブレークポイントが一時的にアクティブで 無効。 |
中断しない | このブレークポイントには 中断ポリシーが設定されているため、ヒットしたときに実行が中断されることはありません。 |
ブレークポイントアイコン
タイプと ステータスに応じて、ブレークポイントは次のアイコンでマークされます。
行 | メソッド | 例外 | ||
|---|---|---|---|---|
標準 | ||||
無効 | ||||
検証済み | ||||
ミュート | ||||
非アクティブ / 依存 | ||||
ミュート無効 | ||||
中断しない | ||||
確認済みの一時停止なし | ||||
無効 | ||||
生産性のヒント
- デバッグ出力用ブレークポイントを使う
コードに print ステートメントを挿入する代わりに、 非一時停止 ロギングブレークポイント(他のデバッガーでウォッチポイントとも呼ばれる)を使います。 これにより、デバッグログメッセージをより柔軟かつ一元的に処理することができます。
- ロギングブレークポイントをすばやく設定する
非停止 ログブレークポイントを設定するには、 Shift を押しながらガターをクリックします。 これによりプログラムの実行は中断せず、
Breakpoint reached: LineBreakpoint.php:10のようなメッセージがログに記録されます。 エディター上にある式をログ出力したい場合は、 Shift を押しながらガターをクリックする前に、その式を選択してください。- ブレークポイントの説明を追加
プロジェクトに多くのブレークポイントがある場合、検索しやすくするため、説明を追加できます。 これを行うには、 ブレークポイント ダイアログ Ctrl+Shift+F8 でブレークポイントを右クリックし、メニューから 説明の編集 を選択します。 ブレークポイント名を入力し始めると、そのブレークポイントがフォーカスされます。
- ソースに移動
ブレークポイント ダイアログから選択したブレークポイントが設定されているコード行に移動するには、 F4 を押します。