1

NB 7.1、WAMPP 1.7.7 (PHP 5.3.8 を使用)、および XDebug 2.1.4 をインストールしました。ブレークポイントの変数を調べることができます。ただし、例外が発生した場合、Netbeans はこれを認識しませんが、ブラウザーは xdebug 形式のコールスタックを表示します。NB はまだ「netbeans-xdebug」が「実行中」であると考えています。だから私の質問は: Netbeans は PHP 例外を報告できますか?


@Andyのソリューションに関して

テスト用に次のコードを準備します。

<?php

function exceptionHandler($ex) {
    echo 'Uncaught exception: ', $ex->getMessage(), "\n"; // BREAKPOINT
}
set_exception_handler('exceptionHandler');

function errorHandler($errno, $errstr, $errfile, $errline) {
    throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler('errorHandler');

throw new Exception;
phpinfo();

?>

Netbeans が停止し、私のブレークポイントを報告するので、1 つの問題が解決しました。ただし、NB は「Socket Exception」というタイトルのアラートをすぐにテキストで表示します。

ソケット例外が発生しました

ウォッチがある場合は、それらを削除してデバッガを再起動してみてください。ウォッチを削除しても問題が解決しない場合、またはウォッチがない場合は、問題を報告し、問題を再現するための正確な手順を提供してください。IDE ログを添付してください。プロジェクトを添付することも非常に役立ちます。

例外が発生すると PHP が終了すると思うので、xdebug を停止する必要があり、Netbeans はダビング データを失います。

4

2 に答える 2

3

Netbeans でデバッグ モードを開始し、未処理の例外が通過すると、デバッガを実行していない場合と同様に、ブラウザに出力されます。

Netbeans は魔法のようにそれらをキャッチしません。つまり、変数の内容を見るのと同じ方法でそれらを分析することはできません。

"netbeans-xdebug" is "running" が表示されるのは、実際にはまだ実行中であり、自分で停止するかデバッグ セッションで深刻なエラーが発生するまで実行され続けるためです。通常、重大なエラーが発生すると、ポップアップ ウィンドウが表示されます。自分で停止すると、netbeans はブラウザーに新しいタブを作成し、xdebug セッションが終了したことを示します。

ブラウザで更新を押すと、netbeans がリクエストをキャッチして分析し、ブレークポイントを設定している場合はブレークポイントで停止します。そのリクエストが処理された後、再度更新を押すと、netbeans は入ってくるリクエストをキャッチし続けます。

編集: xdebug サイトで見つけた 1 つのことは、次のオプションの例外を除いて、ある意味で役立つ可能性があります。

xdebug.show_exception_trace
 Type: integer, Default value: 0 
When this setting is set to 1, Xdebug will show a stack trace whenever 
an exception is raised - even if this exception is actually caught.

このオプションは、php.ini ファイルの xdebug セクションで設定できます。

于 2012-05-07T22:27:27.773 に答える
2

この状況の回避策の 1 つは、set_error_handler() 関数を使用してカスタム エラー ハンドラを設定し、そのカスタム エラー ハンドラ内にブレークポイントを設定することです。エラーが発生すると、netbeans はブレークポイントで停止し、エラー発生時の変数を確認できるコール スタックに完全にアクセスできます。

于 2012-07-03T21:23:20.717 に答える