12

リモートデバッグを機能させようとしています。PHP は VM で実行されており、ホスト マシンで NetBeans からデバッグしようとしています。

こちらの手順に従い、Windows 7 ファイアウォールと VirtualBox ネットワーク設定でポート 9000 を転送し、NetBeans でパス マッピングを設定しました。私のxdebug設定は次のようになります:

xdebug.remote_enable = On
xdebug.remote_connect_back = On
xdebug.idekey = "netbeans-xdebug"
xdebug.remote_log = /tmp/xdebug.log

(正しい idekey を使用して) デバッグしたい URL をロードすると、次のログが記録されます。

I: Checking remote connect back address.
I: Remote address found, connecting to 192.168.0.1:9000.
I: Connected to client. :-)
-> <init xmlns="urn:debugger_protocol_v1" 
         xmlns:xdebug="http://xdebug.org/dbgp/xdebug"
         fileuri="file:///home/dev/web/projects/project.com.vm/httpdocs/index.php" 
         language="PHP" protocol_version="1.0" 
         appid="1380" 
         idekey="netbeans-xdebug">
   <engine version="2.2.1"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2012 by Derick Rethans]]></copyright></init>

-> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response>

ただし、NetBeans は接続を待機したままです。ブレークポイントを設定することに加えて、最初の行で停止するように設定しました。NetBeans が listen していない場合でも、ログ・ファイルには「クライアントに接続されました」というメッセージが含まれます。

私が見逃している可能性のあるものはありますか?

ありがとう。

4

6 に答える 6

5

この問題に対する私の解決策は次のとおりです。

1)ネットワーク構成でポート転送を有効にします(NATアダプターを使用)。ポート9000と、ホストとゲストのIPアドレスを使用しました。プロトコルはTCPです

2)xdebug設定を構成しました:私の場合、xdebug.remote_host = "永続的なホストIP"を設定することが重要でした。そうすれば、すべてが完全に機能しました。

これが誰かを助けてくれることを願っています。

于 2012-12-29T17:56:11.640 に答える
4

仮想マシンのプロジェクトで Xdebug を使用するための 4 つのオプションを追加しました。

xdebug.remote_enable = On
xdebug.remote_host = [YOUR_HOST_IP]
xdebug.remote_connect_back = On
xdebug.remote_autostart = On

デバッガーがリッスンしている限り、ブレークポイントで中断する必要があります。

于 2015-02-23T19:13:22.240 に答える
2

ログファイルにこれがある場合:

I: Connected to client. :-)

これは、Xdebug が IDE への接続に成功したことを意味します。

IDE (netbeans) は、情報を送信することさえせずに、接続を単にシャットダウンします。これは、例のファイル名 ( ) をどう処理すればよいかわからない場合に発生file:///home/dev/web/projects/project.com.vm/httpdocs/index.phpします。これは、IDE で正しいパス マッピングが設定されていないことが原因です。

于 2014-03-24T11:06:01.210 に答える
1

仮想マシンはホスト マシンと通信できる必要があり、これを実現するには 9000 を転送する必要があります。このステップはバックグラウンドで行われるため、一部のセットアップでは説明されていません。

これを行うには、コマンド ssh -L 9000:localhost:9000 yourUserName@youVirtualMachine を発行します。

これを簡単にするために、/etc/hosts と ~/ssh/config ファイルに仮想マシンの名前を入れています。

于 2012-10-23T13:35:44.333 に答える