@dungan
2019-08-14T06:14:00.000000Z
字数 1654
阅读 134
PHP
打上断点,监听到 debug 请求后,整个 phpstorm 的调试面板就会出现,如下图
从上到下依次对应图中的按钮。
Resum Program(F9)
:运行到下一个断点的位置或执行完程序;例如,你在第20行和25行有两个断点,当前运行至第20行,按F9,则运行到下一个断点(即第25行),再按F9,则运行完整个流程,因为后面已经没有断点了。Pause Program
:暂停程序,启用Debug。Stop 'xxx' (Ctrl + F2)
:中断程序,相当于使用了 exit 或 die。View Breakpoints (Ctrl + Shift + F8)
:查看所有断点,该按钮会打开 Breakpoint断点管理面板, 该面板的功能介绍我们后面介绍。Mute Breakpoints
:使所有断点失效,选择这个后,所有断点变为灰色,程序会正常执行完。如果只想使某一个断点失效,可以在断点上右键取消Enabled,则该行断点失效。
该面板我们可以通过左侧的 View Breakpoints
或在 断点上右键
打开,打开后如下图。
Enabled
:用来控制断点是否开启。Condition
:用来控制当满足某条件时,该断点才起作用,例如上图,我们设置只有当$giftId < 50
时该断点才生效。Evaluate and log
:可以在执行这行代码时计算表达式的值,并将结果输出到控制台。Remove once hit
:调试完后删除该断点。Disable until breakpoint is hit
:于某些场景的断点,需要其他断点先触发之后再进行触发,可以选择此项。默认为 None。
从上到下依次对应图中的按钮。
Show Execution Point (Alt + F10)
: 如果你的光标在其它行或其它页面,点击这个按钮可跳转到当前代码执行的行。Step Over (F8)
:步过,一行一行地往下走,如果这一行上有方法不会进入方法。Step Into (F7)
:步入,如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库(JDK)的方法。Force Step Into (Alt + Shift + F7)
:强制步入,能进入任何方法,查看底层源码的时候可以用这个进入官方类库(JDK)的方法。Step Out (Shift + F8)
:步出,从步入的方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值。Run to Cursor (Alt + F9)
:运行到光标处,你可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点,光标只能位于断点之后才有效。Evaluate Expression (Alt + F8)
:计算表达式,用来查看当前变量的值。智能进入(Smart step into)
:一行代码里有好几个方法,只选择某一个方法进入,程序会弹出一个对话框,我们选择需要的调用处即可。
计算表达式
该操作用在调试过程中计算某个表达式的值。你可以点击该
图标
或者 对变量右键Evaluate Expression
来计算表达式。
例如,我们可以写一个表达式 !empty($giftId) && !is_array($giftId)
,用来判断 $giftId 不为空,并且也不为数组类型,写好表达式后,就可以点击 Evaluate 来获取表达式的运行结果。
调试面板右侧的
Variables
区域中展示了调试过程中监视的变量,当然你可以通过左上角的+/-
号来控制你想 watch 的变量,你还可以通过对变量右键Add To Watchs
将变量添加到该区域。
Variables
区域中的变量,通过右键 set Value
你还可以修改它的值,例如, 你想看到某些场景下不同变量值时代码的行为。