14

PHP スクリプトを HHVM で実行すると、debug-host および debug-port 引数を渡すことができることがわかりますが、それが何をどのように行うのか正確に理解できないようです。

これらの引数は、HHVM 自体 (またはコンパイル済みの PHP 自体) をデバッグするためのものですか、それとも PHP スクリプトをデバッグするためのものですか? つまり、HHVM が動作する方法をデバッグするためのものですか、それとも XDebug で通常行うようにデバッグするためのものでしょうか?

最初は、XDebug 用にセットアップされた IDE に接続しようとしましたが、何もしないように見えるので、ここで質問しようと思いました。

HHVM のデバッグ引数は正確には何ですか?HHVM で PHP スクリプトをデバッグするためにそれらを使用するにはどうすればよいですか?

4

5 に答える 5

13

リモート デバッグを機能させるのは非常に難しく、ドキュメントの落とし穴や誤解がありました。

サーバー側で「サンドボックス」と呼ばれるものを構成する必要があります。

次に、-m debug -h で呼び出された hhvm の別のインスタンスを使用して、実行中のサーバーにデバッガーをアタッチする必要があります。そこから、デバッガーのすべての機能を使用できます。

プロセスを説明する記事を書きました。

于 2013-12-04T22:15:22.463 に答える
6

HHVM はバージョン 3.3.0 LTS で XDebug を追加しているようです。明らかに、まだ生産準備が整っていません。以下にリストされている xdebug オプションを server.ini ファイルに追加することで有効にできます。接続しますが、通常は HHVM がクラッシュします。

hhvm.xdebug-not-done.enable=1
hhvm.xdebug-not-done.remote_enable=1
hhvm.xdebug-not-done.idekey="PHPSTORM"
hhvm.xdebug-not-done.remote_host="localhost"
hhvm.xdebug-not-done.remote_port=9089
于 2014-09-29T18:56:07.240 に答える
2

ランス・バジャーへの返信:

3.4.0 では、xdebug-not-done を xdebug に名前変更しました。したがって、php.ini の xdebug セクションは次のようになります。

xdebug.enable=1
xdebug.remote_enable=1
xdebug.idekey="PHPSTORM"
xdebug.remote_host="localhost"
xdebug.remote_port=9089

出典: Issue 4348Pull Request 3779

于 2014-11-28T10:17:13.327 に答える
2

これを少し調べてみると、https ://github.com/dpaneda/hiphop-php/blob/master/doc/command.compiledが見つかりました。

= --デバッグホスト

「デバッグ」モードを実行している場合、アタッチする HPPi サーバーを指定します。

= --デバッグポート

「デバッグ」モードを実行している場合、接続する HPPi サーバー ポートを指定します。

どうやら、それらはもともと HPVM (Hip Hop Virtual Machine) に置き換えられた HPHPi (Hip Hop Interpreter) 用でした。

興味深いことに、仮想マシンのヘルプには次のように書かれています。

-h [ --debug-host ] arg 指定したアドレスのデバッガー サーバーに接続します

–debug-port arg (=-1) 指定したポートでデバッガー サーバーに接続します

そのため、彼らは CLI 引数を「デバッガー」を指すように転用したようですが、私が見つけることができるドキュメントで何を使用するかについては言及していません。

また、それがどのように機能するか示すソースのいくつかを見つけました:

于 2013-10-18T16:55:26.030 に答える
1

したがって、シロシスからのポインタを使用して、次のことがわかりました。

CLI からスクリプトを実行する場合は、hhvm script_name.php. ただし、デバッグしたい場合は、hhvm -m d script_name.php実行して、スクリプトを実行するためのデバッガーを起動できます。

を使用-m sすると、HHVM をサーバー モードで実行できます。私は、それが--debug-host--debug-portが言及しているものだと信じています。つまり、どこかで HHVM の 1 つのインスタンスをサーバー モードで実行している場合、デバッグ モードで実行している HHVM の別のインスタンスから接続できます。おもう。

于 2013-10-18T17:45:31.940 に答える