ブレークポイント
ブレークポイントは、特定のポイントでプログラムの実行を一時停止する特別なマーカーです。これにより、プログラムの状態と動作を調べることができます。ブレークポイントは、たとえば、特定のコード行に到達したときにプログラムを一時停止するなどの単純なものから、追加の条件をチェックしたり、ログに書き込んだりするなどのより複雑なロジックを含むものまであります。
ブレークポイントは、一度設定すると、一時的なブレークポイントを除き、明示的に削除するまでプロジェクト内に残ります。
ブレークポイントの種類
PhpStorm では、次のタイプのブレークポイントを使用できます。
行ブレークポイント : ブレークポイントが設定されたコード行に到達したらプログラムを中断します。このタイプのブレークポイントは、実行可能なコード行に設定できます。
メソッドのブレークポイント : 指定されたメソッドまたはその実装の 1 つを開始または終了するとプログラムを中断し、メソッドの開始 / 終了条件を確認できるようにします。
例外のブレークポイント :
Exception
またはそのサブクラスがスローされたときにプログラムを中断します。これらは例外条件にグローバルに適用され、特定のソースコード参照を必要としません。
ブレークポイントの設定
行ブレークポイントを設定する
ブレークポイントを設定するコードの実行可能な行でガターをクリックします。または、行にキャレットを置き、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 行までスキャンし、実行可能コードが配置されている行で停止し、ブレークポイントの定義をこの行に更新します。
次の例では、実行可能コードが含まれていない 4 行目にブレークポイントが配置されています。
デバッグセッションを実行すると、PhpStorm はブレークポイントを 5 行目に移動して解決し、セッションを一時停止して、対応する通知を表示します。
解決されたブレークポイントを無効にする
デバッグセッション中に 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+) チェックボックスの選択を解除します。
ブレークポイントの管理
ブレークポイントを除去する
例外以外のブレークポイントの場合は、ガター内のブレークポイント。
すべてのブレークポイントの場合: メインメニューで除去 Delete をクリックします。
Ctrl+Shift+F8 に移動し、ブレークポイントを選択して、
誤ってブレークポイントを削除してそのパラメーターを失うのを防ぐために、エディターにドラッグするか、マウスの中央ボタンをクリックして、ブレークポイントを削除することを選択できます。これを行うには、エディターにドラッグまたはマウスの中央ボタンをクリックを選択します。ブレークポイントをクリックすると、それが有効または無効になります。
に移動してブレークポイントのミュート
ブレークポイントでしばらく停止する必要がない場合は、ミュートできます。これにより、デバッガーセッションを移動することなく、通常のプログラム操作を再開できます。その後、ブレークポイントのミュートを解除して、デバッグを続行できます。
デバッグツールウィンドウのツールバーのブレークポイントのミュートボタン をクリックします。
ブレークポイントを使用可能 / 使用不可にする
ブレークポイントを削除すると、その内部構成は失われます。パラメーターを失うことなく個々のブレークポイントを一時的にオフにするには、無効にすることができます。
非例外ブレークポイントの場合: 右クリックして、必要に応じて有効オプションを設定します。ブレークポイントの削除が割り当てられていない場合は、マウスの中央ボタンで切り替えることもできます。
すべてのブレークポイントの場合: 実行 | ブレークポイントの表示 Ctrl+Shift+F8 をクリックして、リストのブレークポイントをオン / オフにします。
ブレークポイントの移動 / コピー
ブレークポイントを移動するには、それを別の行にドラッグします。
ブレークポイントをコピーするには、Ctrl を押したまま、ブレークポイントを別の行にドラッグします。これにより、宛先に同じパラメーターを持つブレークポイントが作成されます。
設定されたすべてのブレークポイントを表示
ブックマークツールウィンドウですべてのブレークポイントのリストを表示できます。ブレークポイントは、コード内に配置すると、ツールウィンドウの専用リストに自動的に追加されます。
メインメニューで、ブレークポイントリストを展開します。
に移動するか、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 を押したままガターをクリックします。
一度ヒットしたら除去する
ブレークポイントを 1 回ヒットした後、プロジェクトから削除するかどうかを指定します。
次のブレークポイントに到達するまで無効にする
次のブレークポイントに到達するまで無効にするボックスでブレークポイントを選択すると、現在のブレークポイントのトリガーとして機能します。これにより、指定したブレークポイントに到達するまで現在のブレークポイントが無効になります。
これが発生した後に再び無効にするか、有効のままにするかを選択することもできます。
このオプションは、特定の条件下または特定のアクションの後でのみプログラムを中断する必要がある場合に役立ちます。この場合、通常、トリガーブレークポイントはプログラムの実行を停止するために必要ではなく、non-suspending になります。
ブレークポイントのステータス
ブレークポイントには、次のステータスがあります。
状況 | 説明 |
---|---|
検証済み | デバッガーセッションを開始した後、デバッガーはプログラムをブレークポイントで一時停止することが技術的に可能かどうかをチェックします。はいの場合、デバッガーはブレークポイントを検証済みとしてマークします。 |
警告 | ブレークポイントでプログラムを一時停止することが技術的に可能ですが、それに関連する問題がある場合、デバッガーはブレークポイントのステータスを警告に設定します。これは、たとえば、メソッドの実装の 1 つでプログラムを一時停止することが不可能な場合に発生することがあります。 |
無効 | ブレークポイントでプログラムを一時停止することが技術的に不可能な場合、デバッガーはそれを無効としてマークします。これは、その行に実行可能なコードがないためよく発生します。 |
非アクティブ / 依存 | ブレークポイントは、別のブレークポイントにヒットするまで無効になるように構成されている場合、非アクティブ / 依存としてマークされますが、これはまだ発生していません。 |
ミュート | すべてのブレークポイントはミュートされているため、一時的に非アクティブです。 |
無効 | それはされているため、このブレークポイントが一時的にアクティブで無効。 |
中断しない | このブレークポイントには中断ポリシーが設定されているため、ヒットしたときに実行が中断されることはありません。 |
ブレークポイントアイコン
タイプとステータスに応じて、ブレークポイントは次のアイコンでマークされます。
行 | メソッド | 例外 | ||
---|---|---|---|---|
標準 |
|
|
| |
無効 |
|
|
| |
検証済み |
|
| ||
ミュート |
|
| ||
非アクティブ / 依存 |
|
| ||
ミュート無効 |
|
| ||
中断しない |
|
| ||
確認済みの一時停止なし |
|
| ||
無効 |
|
生産性のヒント
- デバッグ印刷にブレークポイントを使用する
コードに出力ステートメントを挿入する代わりに、non-suspending ログブレークポイント(他のデバッガーではウォッチポイントと呼ばれることもあります)を使用します。これにより、デバッグログメッセージを処理する、より柔軟で集中化された方法が提供されます。
- ロギングブレークポイントをより迅速に設定する
non-suspending ロギングブレークポイントを設定するには、Shift を押しながらガターをクリックします。これはプログラムの実行を中断せず、代わりに
Breakpoint reached: LineBreakpoint.php:10
のようなメッセージを記録します。エディターの前にある式をログに記録する場合は、Shift を押しながらガターをクリックする前に、式を選択します。- ブレークポイントの説明を追加する
プロジェクトに多数のブレークポイントがある場合、検索を容易にするためにブレークポイントに説明を追加できます。これを行うには、ブレークポイントダイアログ Ctrl+Shift+F8 のブレークポイントを右クリックし、メニューから説明の編集を選択します。これで、ブレークポイント名の入力を開始すると、フォーカスが取得されます。
- ソースに移動
ブレークポイントダイアログから選択したブレークポイントが設定されているコード行に移動するには、F4 を押します。
関連ページ:
PHP 例外ブレークポイントを使用してデバッグする
PHP 例外ブレークポイントを使用すると、例外またはエラーがスローされたとき、または PHP 通知または警告が発行されたときに、デバッガーはアプリケーションコードの実行を一時停止します。ソースコード内の特定の行に設定する必要がある行ブレークポイントとは異なり、構成された例外ブレークポイントはコードベース全体にグローバルに適用されます。例外ブレークポイントにヒットすると、PhpStorm はコードの各行にアイコンを自動的に追加します。PHP 例外ブレークポイントを設定するを押すか、メインメニューか...
PHP デバッグセッションを開始する
デバッグを開始する前に、Web アプリケーションまたは PHP CLI スクリプトが実行されるマシンにデバッグエンジンがインストールされ、適切に構成されていることを確認してください。PhpStorm は、最も人気のある 2 つのツール、Xdebug と Zend デバッガーによるデバッグをサポートしています。これらのツールは、互いにブロックし合うため、同時に使用することはできません。この問題を回避するには、Xdebug を構成するおよび Zend デバッガーの構成に従って、関連する PHP インタープ...
中断されたプログラムを調べる
デバッガーセッションが開始されると、デバッグツールウィンドウが表示され、次のいずれかが発生するまでプログラムが正常に実行されます。ブレークポイントがヒットしました、プログラムを手動で一時停止して再開する、その後、プログラムは中断され、現在の状態を調べたり、実行を制御したり、実行時にさまざまなシナリオをテストしたりできます。フレームを調べる:プログラムの状態はフレームで表されます。プログラムが一時停止すると、現在のフレームスタックがデバッグツールウィンドウのフレームタブに表示されます。フレームは
ブックマーク
大規模なプロジェクトで作業する場合、ファイルやフォルダーの検索には時間がかかる場合があります。そのような場合、PhpStorm はブックマークを備えています。必要なコード行をブックマークして、見つけやすくすることができます。他のプロジェクトアイテムよりも頻繁に必要なファイルやフォルダーをブックマークすることもできます。すべてのブックマークはブックマークツールウィンドウのリストにグループ化されており、メインメニューからを選択するか、を押すと開くことができます。ツールウィンドウには、コードにブレー...
プログラムのステップスルー
ステップは、プログラムの段階的な実行を制御するプロセスです。PhpStorm は、次の行に直接移動する必要があるか、中間のメソッド呼び出しもインスペクションする必要があるかなど、戦略に応じて使用される一連のステップアクションを提供します。ステップボタンは、デバッグウィンドウのツールバーにあります。ステップオーバー:現在のコード行をステップオーバーし、ハイライトされた行にメソッド呼び出しが含まれている場合でも、次の行に移動します。メソッドの実装はスキップされ、呼び出し元メソッドの次の行に直接移動...
デバッグエンジンの構成を検証する
PhpStorm は、Xdebug または Zend デバッガーの構成を検証し、一部の設定が欠落しているか、他の設定と矛盾しているかどうかを通知します。プロジェクトの PHP インタープリターを構成する場合、PhpStorm はローカルの PHP 開発環境にデバッガーがインストールされているかどうかを通知し、使用されている Xdebug または Zend デバッガーのバージョンを報告します。詳細については、「デバッグエンジンを構成する」、「ローカル PHP インタープリターを構成する」、「リモート PHP...