web-dev-qa-db-ja.com

外部リクエストでNetbeansでXDebugを起動する

Netbeans 6.7とXDebugを使用して、マシン上のPHPサイトをデバッグし、Netbeans内から要求を起動します(プロジェクト->デバッグ)。これは正常に機能し、非常に便利です。

私の質問は、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.comlocalhostにリダイレクトします

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が外部要求をまったく認識していないと思います。

36
John Carter

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

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

46
ax.

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

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

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

xdebug.remote_autostart = 1
xdebug.idekey = "netbeans-xdebug"
21
Pada

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からdefaultに変更してから、元に戻しました。

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

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

2
Pete855217

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

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

0
timmow