phpstorm 使用 Xdebug 调试代码

用过Java、C#等静态语言的同学调试代码经常是打个断点,然后轻松调试,而PHPer调试代码时经常是

echo $a;exit;

非常的不方便,有的同学有时候打完断点没删就给commit上去了,这就造成了很多困扰,有没有办法更优雅的调试呢?那当然有的,这里用到一个PHP模块xdebug,xdebug安装教程,使用它进行PHP代码调试,能有效减少工作量和BUG调试时间,特别是在某些复杂的程序中,光靠看都无法找出问题

Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况。

  • 如果是集成环境,比如phpstudy,就不需要自己安装了,直接环境->PHP->设置(PHP版本号别搞混了
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LR385pt4-1591945009496)(https://cdn.learnku.com/uploads/images/202006/09/34227/zRdqzy2dIc.png!large)]
  • 这里设置下端口号,凭自己喜好就行,我设置了9001
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YKpicASm-1591945009499)(https://cdn.learnku.com/uploads/images/202006/09/34227/xz2pMtgJ7h.png!large)]
  • 查看phpinfo,搜索下,有xdebug模块就行了

接下来打开phpstorm,ctrl+alt+s打开设置

来到debug设置,将端口改成前面你设置的端口号(其他默认即可,当然也可以开启,看不懂英文可以翻译一下)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fJP7wqog-1591945009500)(https://cdn.learnku.com/uploads/images/202006/09/34227/5h5m7APJNC.png!large)]

在点开Servers,点+号新建一个,名字随意,Host填自己要Debug的域名(比如localhost,我这里填了一个虚拟域名),端口号默认80即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KS9hpPMC-1591945009502)(https://cdn.learnku.com/uploads/images/202006/09/34227/iz004DzByg.png!large)]

然后右上角有一个Edit Configurations,点击打开

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d5oyHqzT-1591945009503)(https://cdn.learnku.com/uploads/images/202006/09/34227/J2tTolhlyF.png!large)]

点击加号,添加一个PHP Web Page

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e27obf3L-1591945009505)(https://cdn.learnku.com/uploads/images/202006/09/34227/5UyUa3TQxh.png!large)]

name随意,Server选刚才你配置的,startUrl是启动的接口地址,如果我要debug一个下单的接口,于是我把他填写了进去,然后点击箭头所指向的Validate

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lQp0671w-1591945009506)(https://cdn.learnku.com/uploads/images/202006/09/34227/fxBUQ4nYj5.png!large)]

第一个选项是调试本地的,第二个是调试远程的,我这里远程不讲了,免得搞晕你们

第一个输入框填写自己的项目目录,因为我这个是tinkphp框架,我把他指向了项目目录的public目录

第二个填写自己的域名,这里编辑器自动帮忙填写了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fIoecES1-1591945009506)(https://cdn.learnku.com/uploads/images/202006/09/34227/kFhh118J4F.png!large)]

点击Validate按钮,phpstorm会帮忙检测配置是否正确,如果有错请按照提示修改

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RZsWD1VQ-1591945009507)(https://cdn.learnku.com/uploads/images/202006/09/34227/QJXr8f9YFD.png!large)]

最后点击右上角的这只臭虫,会自动打开浏览器进行调试,臭虫旁边的电话机如果变绿了表示正在监听9001端口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NdxzGkkQ-1591945009507)(https://cdn.learnku.com/uploads/images/202006/09/34227/42oxhceVnk.png!large)]

这时phpstorm会自动打开debug控制台,点击箭头自动下一步,左边点击红点可以打断点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R7uee3M5-1591945009508)(https://cdn.learnku.com/uploads/images/202006/09/34227/tL3mSbCWdw.png!large)]

如果想用postman呢?

把这个参数拿过来
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PBqaFEvg-1591945009508)(https://cdn.learnku.com/uploads/images/202006/09/34227/IwRg7fZvBu.png!large)]

把这对key-vlue加入postman的参数内,点击send自动开启调试(postman会一直处于发送状态中,直至断点调试完毕)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lAeM2l1Q-1591945009509)(https://cdn.learnku.com/uploads/images/202006/09/34227/JZwbrqA0vw.png!large)]

我写的教程希望以最简短的步骤让读者能运行起xdebug,某些细节方面就忽略了,有兴趣的同学可以去网上查找更详细的配置和说明~~(当然没兴趣)~~


debug控制台简单说明

  • 左边可以打断点,当代码执行到断点时会停止
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lzj5fslc-1591945009510)(https://cdn.learnku.com/uploads/images/202006/12/34227/d3bDIWrHSz.png!large)]
  • 这个按钮点一下,会执行一行代码,但遇到函数会直接执行整个函数
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eISpDVeL-1591945009510)(https://cdn.learnku.com/uploads/images/202006/12/34227/luWuPpTxqn.png!large)]
  • 这个按钮也是执行一行代码,可以进入函数内部执行
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cTI4Pxmg-1591945009511)(https://cdn.learnku.com/uploads/images/202006/12/34227/jJm5BUn6VC.png!large)]
  • 跳到下一个断点
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SPEr96xj-1591945009512)(https://cdn.learnku.com/uploads/images/202006/12/34227/5dDHtHEC1u.png!large)]
  • 第一个页面可以很清晰的查看所有变量
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tJkilUne-1591945009512)(https://cdn.learnku.com/uploads/images/202006/12/34227/fP9frn0XgL.png!large)]
  • 第二个页面可以打印变量,甚至可以执行对象函数方法(贼有用)
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NOpftbrY-1591945009513)(https://cdn.learnku.com/uploads/images/202006/12/34227/RbnWOhBldw.png!large)]
  • 第三个页面是查看输出
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FMeEpvOx-1591945009513)(https://cdn.learnku.com/uploads/images/202006/12/34227/UVyUX2YyKf.png!large)]

问题总结

  1. 断点调试时,PHP脚本执行超时后Apache自动断开连接,然后返回一个500错误

在apache的http.conf文件加入

FcgidIOTimeout 6000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值