2017-01-28 11 views
3

Intelプラットフォームでは、割り込み3はデバッガを停止し、デバッガで実行されない場合は無効になります。PHPで割り込みを生成することはできますか? (INT 3、デバッガを停止する)

すべてのブレークポイントをクリアすることで影響を受けることはないので、私はC/C++プログラムで広く使用しています。

PHP例外&エラーハンドラで使用したいと思います。そうすれば、私はちょうどそれを挿入することができます&それについて忘れてしまった。私は&を追加することができます。私がテストしているものに応じて割り込みに影響を与えずに、ブレークポイントを削除して、私のコードがそのような割り込みに遭遇したときに問題が発生した場合、

できますか?

+1

短い答えはノーです。 PHPコードは実行可能コードにコンパイルされません – axiac

+0

PHP 5.6以降、phpdbgインタラクティブデバッガ[(source)](http://php.net/manual/en/debugger-about.php)が組み込まれています。私はそれを使ったことは一度もありませんが、そのようなことができれば、これはおそらく最初に確認する必要があります。 –

答えて

3

xdebug_break()が必要ですが、使用するにはxdebugデバッガを適切にセットアップする必要があります。

xdebugのdocumentationから:

bool xdebug_break() Emits a breakpoint to the debug client.

+1

もちろん、Xdebugはプロダクションサーバには通常はインストールされていないサードパーティの拡張ですので、コード内で 'xdebug_break()'を呼び出すだけで忘れることはできません。 –

+0

合意(+1)。しかし、私はいつもそれを包むことができます。私はすでに 'localhost'のためにホスト名を取得してチェックすることに基づいていくつかのことをします(設定することを忘れそうな単一の定数にも依存したくないからです)。これは私にとっては良い解決策に見えます – Mawg

+1

@Mawg大丈夫です。私はあなたがC/C++技術にもっと似た何か、すなわち生産に影響を与えないものを求めていたという印象を受けました。ラップを忘れないでください。あるいは、あなたのコードが '致命的なエラーを出します:定義されていない関数を呼び出すxdebug_break()' ;-) –

関連する問題