38

Netbeans 6.7 と XDebug を使用してマシン上の PHP サイトをデバッグし、Netbeans 内からリクエストを起動しています (Project->Debug)。これはうまく機能し、非常に便利です。

私の質問は次のとおりです。Netbeans 内から起動したものだけでなく、入ってくるすべての要求にデバッガーをアタッチすることは可能ですか?

つまり、[デバッグ] をクリックする代わりに、Netbeans をモードにして、デバッガーを起動し、次のリクエストにアタッチします。

これはばかげた質問かもしれないと感じていますが、可能であればそれは素晴らしいことです。

編集:もう少し情報

私のシステム(Ubuntu 9.04)は次のように設定されています:

の内容/etc/php5/conf.d/xdebug.ini

zend_extension=/usr/lib/php5/20060613/xdebug.so

xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.idekey=netbeans-xdebug

Netbeans PHP デバッグ オプションはデフォルトです。

Debugger Port: 9000
Session ID: netbeans-xdebug
Stop at the First Line: ticked

私の/etc/hostsファイルはにリダイレクトさwww.mywebsite.comれますlocalhost

Netbeans のデバッグ ボタンをクリックすると、Firefox がアドレスhttp://www.mywebsite.com?XDEBUG_SESSION_START=netbeans-xdebugで起動され、デバッガーが期待どおりに動作します。

しかし、ブラウズしただけhttp://www.mywebsite.com?XDEBUG_SESSION_START=netbeans-xdebugでは、Netbeans でデバッガーが起動しません。

も設定してみましxdebug.remote_host=www.mywebsite.comたが、違いはありません。

また、有効にxdebug.remote_logしました。これは、netbeans 内から開始したときの情報を示していますが、外部要求については何も示していません。したがって、XDebug が外部要求をまったく認識していないと思います。

4

4 に答える 4

48

プロジェクトのプロパティ>実行構成>詳細設定>デバッグ URLに移動し、Web ブラウザー(*)を開かないようにチェックします。ホストをデバッガ プロキシの下に設定しないでください。これらの設定を保存します。プロジェクト ウィンドウのプロジェクトで、マウスの右クリック>デバッグ(これにより、デバッグ接続のリッスンが開始されます)。ブラウザは起動されません。ブラウザに入力します。それはネットビーンズで壊れるはずです。少なくともそれがここで起こっていることです:)http://www.mywebsite.com?XDEBUG_SESSION_START=netbeans-xdebug

(*)パス マッピングも設定する必要があるかもしれません。私にとっては、なくても機能します。

于 2009-10-09T16:15:09.630 に答える
23

デフォルトでは、「XDEBUG_SESSION_START」Cookie/URL 引数が指定されていない場合、xdebug はリモート ホストへの接続を試行しません。php.ini で xdebug.remote_autostart を 1 に設定することで、xdebug を「常にオン」にすることができます。

さらに、これを機能させるには、NetBeans で PHP デバッガーを開始する必要があります。私はまだより良い解決策を見つけていませんが、ランダムなファイルのデバッグを開始し (CTRL+SHIFT+F5 を使用してファイルのデバッグを開始)、その後 (F5 を押して) 1 回続行することにより、PHP デバッガーが着信接続をリッスンするようにすることができます。ブレークポイントで停止しました。Netbeans デバッガーは、実際に停止するまで実行する必要があります。

更新: NetBeans がセッション ID (XDEBUG_SESSION_START) をチェックするため、idekey 変数も設定する必要があります。例えば:

xdebug.remote_autostart = 1
xdebug.idekey = "netbeans-xdebug"
于 2010-05-17T16:31:14.913 に答える
3

PHPをアップグレードし、xdebugをコンパイル/インストールした後、同様の問題が発生しました(NetBeans、Mac OSXで)。phpinfo は xdebug が読み込まれていることを示していましたが、それでも接続できず、上記のすべてを試しても成功しませんでした。次に、PHP.ini ファイルに設定されているパラメーターの数を必要最小限に減らしてみました。これで問題が解決したようです。

; REMOVED (commented) the following
; xdebug.remote_log=/myfile.log
;xdebug.extended_info = off
;xdebug.auto_trace=1
;xdebug.trace_output_dir=/mydir/myphptracefile.txt
;xdebug.trace_output_name=php_trace.%c
;xdebug.collect_params=4

また、デフォルトの xdebug.idekey の名前を netbeans-xdebug からデフォルトに変更してから、元に戻しました。

Apache を再起動した後、xdebug は再び動作を開始しました。正確に何が修正されたのかはわかりませんが、php.ini ファイルの最小数の xdebug 設定から始めて、必要に応じて徐々に追加することをお勧めします。彼ら。トレース設定と関係があるのではないかと思いますが、確かではありません。

最終的に使用した基本設定は次のとおりです。

xdebug.remote_enable=on
xdebug.remote_port=9000
xdebug.remote_host=localhost
xdebug.remote_handler=dbgp
xdebug.idekey=netbeans-xdebug

また、(xdebug ソース パッケージ内の) debugclient をコンパイルし、コマンド ラインでデバッグを確認することもお勧めします。これにより、xdebug が少なくとも IDE とは独立して実行できるかどうかがわかります。

于 2014-07-18T09:56:42.203 に答える
1

Netbeans についてはわかりませんが、私が使用した他の IDE は常にデバッグ接続をリッスンしています。クエリ文字列を URL に追加することで、xdebug から新しいデバッグ セッションを開始できます?XDEBUG_SESSION_START=name。Netbeans がリッスンしている場合、これにより新しいデバッグ セッションが開始されます。

詳細については、http: //xdebug.org/docs/remote#browser_sessionを参照してください。

于 2009-10-08T22:04:44.723 に答える