使用xdebug不仅能够帮助我们调试程序,也赋予了我们断点调试和tarce以及性能分析的功能, 而开启这些功能都是很简单的一件时间, 就像我们使用Php一样。
常用配置
这是我的配置, 因为我喜欢使用虚拟机(虚拟机的配置非常类似于远程配置, 毕竟虚拟机与主机有时并不同在一个网段)
[xdebug]
xdebug.force_display_errors=1
xdebug.cli_color=1
# 开启远程调试
xdebug.remote_enable=on
# 远程调试端口, xdebug 将调试信息发送到远程的端口
xdebug.remote_port=9000
xdebug.idekey=PHPSTORM
xdebug.show_error_trace=1
# 如果开启了则自动开始调试, 不方便
# xdebug.remote_autostart = 1
# 如果开启了此选项, 那么remote_host选项将不起作用
xdebug.remote_connect_back=1
# 远程端口, 安装phpstorm的用于调试的主机
xdebug.remote_host=192.168.115.1
# 最大子元素数目
xdebug.var_display_max_children=-1
#传输数据的最大长度
xdebug.var_display_max_data=-1
# 最大深度, default 3
xdebug.var_display_max_depth=-1
xdebug.dump.SERVER=REQUEST_URI,REQUEST_METHOD
xdebug.dump.GET = *
xdebug.dump.POST = *
#开启分析日志
xdebug.profiler_enable=0
xdebug.profiler_enable_trigger=1
xdebug.profiler_enable_trigger_value=PROFILER
#如果开启,默认0文件会被覆写, 1 追加写
xdebug.profiler_append=0
#默认/tmp
xdebug.profiler_output_dir='/media/sf_sites/profiler'
xdebug.profiler_output_name='callgrind.%t'
xdebug.trace_enable_trigger=1
xdebug.trace_enable_trigger_value=TRACE
xdebug.trace_output_dir='/media/sf_sites/trace'
# 文件名 默认 trace.%c %p pid %R REQUEST_URI %H HTTP_HOST
xdebug.trace_output_name='trace.%R'
使用以上的配置, 那么xdebug的chrome扩展应该配置为
在windows下可以使用开源软件qcachegrind查看profiler详情。
毕竟xdebug生成的profiler文件可读性实在是不高(当然这可能对于一部分人是不适用的.)
- 点击下载qcachegrind
- 类unix使用kcachegrind
- 至于具体的使用, 应该是可以猜到的, 这里就不详细讲述了.
配置xdebug可能遇到的问题.
xdebug 不生效的几种原因
- 未开启监听, 要点亮phpstrom中的debug监听按钮,(一个类似电话一样的按钮)
- 查看是否成功监听指定配置的端口, 打开命令行窗口, 并运行命令
netstat -ano |findstr " special port" - 查看windows防火墙规则, 是否允许通过(被这个问题坑了很久), 打开widnows防火墙, 点击允许应用或功能通过防火墙,将phpstorm加入白名单即可, 或者点击高级设置将监听的端口加入入站规则中。
- 如果使用的是触发型的xdebug, 查看debug扩展是否启用.
断点逐步调试不生效的原因
点击断点之后, 断点是生效的, 但是无法逐步调试
如果是远程调试(虚拟机也属于远程)要设置本地项目与远程项目的文件映射, phpstorm的设置方法如下图所示
