この拡張機能が便利だと思う場合は、問題の解決に役立ち、ここで提供されるサポートに感謝している場合は、私たちの仕事のスポンサーを検討してください。
拡張機能のインストール: F1
を押し、 ext install php-debug
。
この拡張機能は、Derick RethansによるVSコードとXdebugの間のデバッグアダプターです。 Xdebugは、サーバーにインストールする必要があるPHP拡張機能(Linux上の.so
ファイルとWindows上の.dll
)です。
Xdebugのインストール私はあなたが簡単なtest.php
ファイルを作成することを強くお勧めします、 phpinfo();
そこに声明を発表し、出力をコピーしてXDebugのインストールウィザードに貼り付けます。それはそれを分析し、あなたの環境のためにカスタマイズされたインストール手順を提供します。要するに:
Windowsで:PHPバージョン、アーキテクチャ(64/32ビット)、スレッド安全(TS/NTS)、Visual Studioコンパイラバージョンに適したプリコンパイルされたDLLをダウンロードし、PHP拡張機能フォルダーに配置します。
Linux:Source CodeをTarballとしてダウンロードするか、gitでクローンを作成してからコンパイルします。または、配布がすでに事前に構築されたパッケージを提供しているかどうかを確認します。
zend_extension=path/to/xdebug
php.iniに追加して、Xdebugを使用するようにPHPを構成します。 php.iniのパスは、「ロードされた構成ファイル」の下にphpinfo()
出力に表示されます。
php.ini
でリモートデバッグを有効にします:
xdebug v3.xxの場合:
xdebug.mode = debugxdebug.start_with_request = yes
xdebug v2.xxの場合:
xdebug.remote_enable = 1xdebug.remote_autostart = 1xdebug.remote_port = 9000
Xdebugに、Cookie、クエリパラメーター、ブラウザ拡張機能などのリモートデバッガーに接続するように指示する他の方法があります。 remote_autostart
(xdebug v2)/ start_with_request
(xdebug v3)を「ただ機能する」ことをお勧めします。ポートなど、他にもさまざまなオプションがあります。詳細については、リモートデバッグに関するXdebugドキュメントをご覧ください。デフォルトのXdebugポートは、Xdebug v2からV3から9000から9003に変更されたことに注意してください。
Web開発を行っている場合は、Webサーバーを再起動して設定をリロードすることを忘れないでください。
Xdebugセクションのphpinfo()
出力をチェックして、インストールを確認します。
プロジェクトでは、デバッガーにアクセスして、小さなギアアイコンを押してPHPを選択します。 3つの構成を備えた新しい起動構成が作成されます。
Xdebugを聞くこの設定は、Xdebugの指定されたポート(デフォルトでは9003)で聞き始めるだけです。上記のようにXdebugを構成した場合、Webサーバーにブラウザを使用してリクエストを行うたびにCLIスクリプトを起動するたびにXDebugが接続し、ブレークポイント、例外などで停止できます。
現在オープンスクリプトを起動しますこの設定は、CLIデバッグの例です。現在開いているスクリプトをCLIとして起動し、デバッグコンソールにすべてのstdout/stderr出力を表示し、スクリプトが終了するとデバッグセッションを終了します。
組み込みのWebサーバーの起動この構成は、ランダムポート上のPHPビルトインWebサーバーを起動し、 serverReadyAction
ディレクティブを使用してブラウザを開きます。ポートはランダム(localhost:0)ですが、目的の固定ポート(例:localhost:8080)に変更できます。ルータースクリプトが必要な場合は、 program
指令で追加します。追加のPHP/XDEBUGディレクティブすべてのロードでデバッグをトリガーします。
Xdebug V2(レガシー)インストール用の構成もあります。
VSコードでのデバッグに関するより一般的な情報は、https://code.visualstudio.com/docs/editor/debuggingをご覧ください。
注:
launch.json
なしでスクリプトをデバッグすることもできます。フォルダーが開いていない場合、VSコードステータスバーが紫色である場合、F5
を押すとXDEBUG3固有のパラメーターを使用して開いたスクリプトが開始されます。 PHP実行可能性がパスにない場合は、設定php.debug.executablePath
で提供できます。デバッグを機能させるには、Xdebugを正しくインストールする必要があります。
request
:常に"launch"
hostname
:XDebug(デフォルト:利用可能な場合はすべてのIPv6接続、すべてのIPv4接続)またはUNIXドメインソケット( unix://
のプレフィックス)またはWindowsパイプ( ?pipename
)をリッスンするときにバインドするアドレスを組み合わせることはできません -ポート
port
:Xdebugを聴くポート(デフォルト: 9003
)。ポートが0
に設定されている場合、ランダムなポートがシステムによって選択され、プレースホルダー${port}
がenv
およびruntimeArgs
の選択されたポートに置き換えられます。
stopOnEntry
:スクリプトの先頭に壊れるかどうか(デフォルト: false
)
pathMappings
:マシンのローカルソースパスにマッピングするサーバーパスのリスト、以下の「リモートホストデバッグ」を参照してください
log
:VSコードとアダプター間のすべての通信をデバッグコンソールにログするかどうか。さらに下にトラブルシューティングを参照してください。
ignore
:エラーを無視する必要があるグローブパターンのオプションの配列(たとえば**/vendor/**/*.php
)
ignoreExceptions
:無視する必要がある例外クラス名のオプションの配列(たとえば、 BaseException
、 NS1Exception
、 *Exception
、または**Exception*
)
skipFiles
:デバッグ時にスキップするためのグローブパターンの配列。たとえば、星のパターンと否定は、 **/vendor/**
または!**/vendor/my-module/**
などです。
skipEntryPaths
:globパターンの配列。エントリスクリプトが一致する場合にデバッグからすぐに取り外して無視します(例**/ajax.php
)。
maxConnections
:この数の並列デバッグセッションのみを受け入れます。追加の接続がドロップされ、デバッグなしで実行が継続されます。
proxy
:DBGPプロキシ設定
enable
:プロキシ登録設定をtrue
に有効にするには(デフォルトは `false)。
host
:プロキシのアドレス。ホスト名、IPアドレス、またはUNIXドメインソケットをサポートします(デフォルト:127.0.0.1)。
port
:アダプターがプロキシに登録するポート(デフォルト: 9001
)。
key
:プロキシがリクエストをエディターに一致させることができる一意のキー(デフォルト: vsc
)。デフォルトは、VSCODE設定php.debug.idekey
から取得されます。
timeout
:プロキシへの接続をあきらめる前に待機するミリ秒数(デフォルト: 3000
)。
allowMultipleSessions
:プロキシが複数のセッション/接続を同時に転送するかどうか(デフォルト: true
)。
xdebugSettings
:Xdebugのリモートデバッグ設定をオーバーライドして、ニーズに合わせてXdebugを微調整できます。たとえば、 max_children
およびmax_depth
と一緒にプレイして、取得された配列とオブジェクトの子供の最大数と、配列やオブジェクトなどの構造の最大深度を変更できます。これにより、スローマシンのデバッガーをスピードアップできます。設定できる機能名の完全なリストについては、Xdebugドキュメントを参照してください。
max_children
:最初に取得する配列またはオブジェクトの子供の最大数
max_data
:最初に取得する変数データの最大量。
max_depth
:アレイ、ハッシュ、またはオブジェクト構造をIDEに送信するときにデバッガーエンジンが戻る可能性がある最大深度(深さが段階的に取得されるため、これを変更する必要はないはずです。
show_hidden
:この機能は、プロパティ(クラスのプライベートメンバーなど)のより詳細な内部情報が必要な場合、IDEによってIDEに設定されている場合、IDEに設定できます。
xdebugCloudToken
:ローカルでリスニングする代わりに、接続を開き、XDebugクラウドに登録し、その接続のデバッグセッションを受け入れます。
stream
:DBGPストリームに影響を与えることができます。 Xdebugはstdout
のみをサポートしますdbgp stdoutを参照してください
stdout
:リダイレクトstdoutストリーム:0(無効)、1(コピー)、2(リダイレクト)
CLIデバッグに固有のオプション:
program
:起動するスクリプトへのパス
args
:sultumentsはスクリプトに渡されました
cwd
:スクリプトの起動時に使用する現在の作業ディレクトリ
runtimeExecutable
:スクリプトの起動に使用されるPHPバイナリへのパス。デフォルトではパス上のもの。
runtimeArgs
:PHPバイナリに渡す追加の引数
externalConsole
:デバッグコンソールの代わりに外部コンソールウィンドウでスクリプトを起動します(デフォルト: false
)
env
:スクリプトに渡す環境変数
envFile
:環境変数定義を含むファイルへのオプションのパス
ラインブレークポイント
条件付きブレークポイント
ヒットカウントブレークポイント: >=n
、 ==n
、 %n
などの条件をサポートします
機能ブレークポイント
ステップオーバー、ステップイン、ステップアウト
エントリーで壊れます
エントリの停止から始める(F10/F11)
猛攻撃の例外とエラー /警告 /通知に壊れる
複数の並列リクエスト
スタックトレース、スコープ変数、スーパーグロバル、ユーザー定義定数
配列とオブジェクト(クラス名、プライベートおよび静的プロパティを含む)
デバッグコンソール
時計
変数を設定します
CLIとして実行します
デバッグせずに実行します
DBGPプロキシ登録と登録解除サポート
Xdebugクラウドサポート
リモートホストで実行中のアプリケーションをデバッグするには、XDebugにlocalhost
とは異なるIPに接続するように指示する必要があります。これは、 xdebug.client_host
IPに設定するか、 xdebug.discover_client_host = 1
設定してxdebugを常にWebリクエストを行ったマシンに戻すことによって実行できます。後者は、同じサーバーをデバッグする複数のユーザーをサポートし、Webプロジェクトに「動作する」唯一の設定です。繰り返しますが、詳細については、主題に関するXdebugのドキュメントをご覧ください。
サーバー上のファイルをローカルマシン上の適切なファイルにコードマップするには、launch.jsonにpathMappings
設定を設定する必要があります。例:
// server->ローカル "pathmappings":{"/var/www/html": "$ {workspacefolder}/www"、 "/app": "$ {workspacefolder}/app"}
また、CLIデバッグオプションの設定は、スクリプトが常にローカルで起動されるため、リモートホストのデバッグでは機能しないことに注意してください。リモートホストでCLIスクリプトをデバッグする場合は、コマンドラインから手動で起動する必要があります。
デバッガーは、IDEキーを使用してDBGPプロキシに登録できます。プロキシは、この指定されたIDEキーを持つDBGPセッションのみをIDEに転送します。これは、開発者が同じDBGPポートを同時に使用できないマルチユーザー環境で役立ちます。 Webサーバーへのリクエストには、一致するIDEキーが含まれているように、慎重なセットアップが必要です。
dbgpproxyの公式実装。
Xdebugヘルパーブラウザの拡張機能もお勧めします。そこでは、リクエストサイドIDEキーを簡単に構成できます。
StackOverFlowについて質問してください
バグを見つけたと思われる場合は、問題を開きます
この拡張機能の最新バージョンとXDebugがインストールされていることを確認してください
たとえば、TestProjectから問題を再現するために簡単なPHPファイルを試してみてください
"log": true
and buserved debug Consoleパネル
php.iniで、 xdebug.log = /path/to/logfile
を設定します(Webサーバーがファイルに許可を書き込むことを確認してください)
Twitter @damjancvetkoに連絡してください
このアダプターをハッキングするには、リポジトリをクローンしてVSコードで開きます。 NPMがインストールされ、パスにnodejsが必要です。また、最近のPHPとXdebugをインストールし、パスにインストールする必要があります。
Project Directoryのコマンドラインにnpm install
実行するか、 Terminal / Run Task... / npm / npm: install
。
プロジェクトディレクトリのコマンドラインでnpm run watch
実行するか、 Terminal / Run Build Task...
vsコードメニュー。
ランとデバッグサイドバーを開いてデバッグアダプターを起動し、 Debug adapter
構成を選択し、グリーンランアローをクリックします(またはF5
にヒットします)。コンパイルされたアダプターは「サーバーモード」で実行され、TCPポート4711でリスニングされます。
code testproject --extensionDevelopmentPath=.
プロジェクトディレクトリのコマンドラインで、またはLaunch Extension
の実行とデバッグ構成を選択し、グリーンランアローを押します。もう1つのショートカットは、 npm run start
実行することです。また、新しい機能をテストするためのインサイダービルドVSコードを実行することもできます。
「拡張開発ホスト」インスタンスで.vscode/launch.json
を開き、 debugServer
構成ラインを除外します。目的の構成を選択し、 F5
を押してPHPデバッグセッションを実行します。これで、上記のようにテストプロジェクトをデバッグし、最初のコードインスタンス内にブレークポイントを設定して、アダプターコードをステップスルーすることができます。
拡張機能の詳細については、https://code.visualstudio.com/api/working-with-extensions/testing-extensionをご覧ください。
テストはMochaで書かれており、 npm test
またはTerminal / Run Task... / npm: test
。 PRを送信すると、テストは、複数のPHPおよびXDebugバージョンに対してLinux、MacOS、およびWindowsでCIで実行されます。
PRを送信する前に、 npm run lint
またはTerminal / Run Tasks... / npm: lint
。