1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

VS Code XDebug Mac ブレークポイントが止まらない件

Last updated at Posted at 2022-09-01

ローカルMacに、Laravelを入れた。

最近はphpでもデバッグできるらしい。
「printデバッグよりも、全然効率が違いますから」なんて書いてあると気になる。
VS Code上で、PHPのデバッグとコード補完が利用できるらしい。

今さら気が付いたのだが、本やブログなどを見ると、SailだのDockerだの、
環境を一まとめにしたツールを使っている。

解説もそれを前提としているので、環境が違うと動かなかったりする。
だから、最初は、面倒であっても、その本やブログで紹介されているツールと同じのを使うのがいいのかな。
※私の環境では、そういったものは使用していない。
他のブログや本で動かなかった時のヒントになればと思います。

インストールメモ。

環境:
・Mac OS 12.5.1 M1
・php 8.0
・Laravel 9
・VS CODE
・XDebug 3.1.5 (2系、3.2系と微妙に設定が違うようです)
・サーバは、php artisan serve

VS Codeは、インストーラーがあったので、それを利用。
私のバージョンでは、VS Codeを起動して、[Code]->[基本設定]->[機能拡張]と進み、
PHP Debugと、PHP IntelliSenseがセットになった、PHP Extension Packとかいうのをインストールした。

XDebugは、

pecl install xdebug

でできた。

そして、ローカルなphpファイルにブレークポイントを設定してデバッグ実行すると、
そのブレークポイントを設定した地点で実行が停止した。

ここまではよかったのだが、サーバー上で実行するとブレークポイントで止まってくれない。

ブログや本とはパスなどが違い、なかなか動いてくれない。
色々やってやっと動いた。数時間は掛かった。
XDebugとサーバを連動させることが肝であった。

以下は、私の環境でできたものである。

【重要かつ基本】
php -vやphpinfoなどの出力でXDebugが組み込まれているか調べること。
これが一番大事。つまりキングです。
設定ファイルが複数あるケースで、どれが反映しているかわからないときは、
実際に読み込まれている情報を確認すること。
そして、(あれば)ログファイルのエラーを見ること。

php.ini

先頭に

zend_extension="xdebug.so"

これでよかった。homebrewでインストールした先のパスを調べて書かなくても私の環境では問題ない。
コマンドで確認できた。

ファイル末尾に、

[xdebug]
xdebug.mode=debug
xdebug.start_with_request=yes

この2行追加。
これがないと、サーバーで実行した時にブレークポイントで停止してくれない。
Xdebug.client_hostや、xdebug.client_portを指定するとエラーになった。
これはバージョンにもよるのだろう。ちなみに私のはXDebug 3.1.5

ここが一番のハマリだった。
つまり、xdebug.modeとxdebug.start_with_requestだけ設定して、他のものは設定しない。大抵、remote_hostやclient_hostを設定する例が載っている。

今回、デフォルトで動くものがほとんどだった。逆に、値を設定してエラーになるケースが本当に多かった。
私の知識不足なんだろう。おそらく、ツールの配布元など、オーソリティーを詳しく調べると分かるものもあったのかも。

launch.json (VS CODE)

[...]
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9003
        },
[...]

デフォルトでいい。ローカルなので"pathMappings"は必要ない。
下手に入れるとエラー(Class Not Found)になりがち。

デバッグ実行は、launch.jsonを開いたタブで実行。
ソースファイルだと階層違いでClass Not Foundエラーになった。

ファイルが見つからないときは、隠しフォルダの.vscodeを削除して、
もう一回、launch.jsonを作成する。(VS Codeのキャッシュエラー?)

次は、myPHPAdmin行ってみよう!

以上

【昔話】
そういえば、昔(20年くらい前?)、Visual Studioのエディタに補完機能が付いていて、
それで色々と表示される候補を見て、クラスライブラリの使い方を覚えていったっけなぁ。

VCのエディタが便利で、Windowsが関係ないCのソースコードなんかにも、使っていた。
秀丸はその時あったのかな? 先輩はMifesというエディタの方が多かったと記憶している。

なんでもvimでやるのが「通」だと思っていたのだが、結局マスターできず。
今回、VS CodeにVimプラグインがあったので、早速インストールして喜んでいる。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?