在 phpstorm 中的使用问题
不少小伙伴会发现,一顿猛如虎操作的下来后,发现依然进入不了调试模式。焦头烂额之际,查找官方文档,常见问题描述如下:
官方提供的方案
- 使用了代理类 例如hyperf框架,如果程序实际上执行的是代理类,需要在代理类里面打断点。
- 程序跑在虚拟机里面 因为断点是由文件的绝对路径+行号决定的。如果虚拟机和宿主机的项目路径不一样,就会导致断点不被触发。我们需要去配置IDE的path mapping来解决这个问题。
- 项目目录使用了软连接 如果项目目录使用了软连接,会导致断点失效。我们需要去配置IDE的path mapping来解决这个问题。
- 代码热更新 如果使用了Swoole的热更新机制,会导致断点失效。我们要关闭Swoole的热更新功能。
方案的补充
- debug 模式启动规则 这里以 hyperf 的启动为例,debug 模式不能像以往一样操作 phpstorm 的 debug 按钮,需要使用 -e 参数启动
php -e bin/hyperf start
2.debug 端口号的占用
不少人一开始是使用 debug 按钮尝试去开启 debug 模式,发现无效停止后,其实 debug 口端号依然开着
a. 可以在 phpstorm 右上功能栏查看的 debug 状态,如果提示 Stop Listening for PHP Debug Connections,说明还开着,需要手动关闭
b. 通过 lsof 命令判断是否占用假设 debug 的端口号为 9000
lsof -i:9000