讲解关于phpdbg的相关使用方法
phpdbg -e /path/to/script.php
选项 | 用例 | 说明 |
---|---|---|
q | -q | 不显示欢迎语 |
v | -v | Enable opline logging output (verbosity) |
b | -b | 控制台颜色禁用 |
n | -n | 禁用默认的 php.ini |
c | -c/path/to/php.ini | 设置 php.ini 文件的加载路径 |
d | -dmemory_limit=4G | 设置 php.ini 中的指令 |
i | -i/path/to/init | 设置 .phpdbginit 脚本 |
I | -I | 忽略默认的 .phpdbginit |
O | -O/path/to/log | 设置 opline 记录到输出日志 |
r | -r | 立即运行 |
rr | -rr | 立即运行然后退出 |
E | -E | 启用单步调试执行代码 |
S | -Scli | 覆盖 SAPI 名称 如本例:SAPI phpdbg – cli |
l | -l4000 | 设置远程控制台监听端口 |
a | -a192.168.0.2 | 设置远程控制台地址 |
p | -p* | 打印 opcode 信息 |
h | -h | 打印帮助信息 |
V | -V | 打印版本号 |
操作 | 说明 |
---|---|
-p | 输出主要的执行上下文 |
-p* | 输出整个文件中出现的 opcodes (包括 classes 和 functions) |
-p=function_name | 输出这个文件中给定函数名称的 opcodes |
-p=class_name:: | 输出给定类的所有方法的 opcodes |
-p=class_name::method | 输出给定方法的opcodes |
run
行号单步调试(默认)
set stepping line
opcode单步调试
set stepping opcode
然后执行
step
或者执行
s
注意:step
需要在run
之后执行
什么意思?比如
function a()
{
$value = b();//在此设置断点 A
return $value;
}
function b()
{
return true;
}
在A处设置断点,使用 step
会进入 b 函数
如果使用 next
则会直接跳过 b 到 return $value;
此命令直接从当前执行代码所在行到下一个断点,如果没有断点
则直接运行完成。
leave跳过函数起始到return之前的所有断点,该函数如果有调用
其他函数,则不会进入深层函数的return
finish 跳过所有断点直接执行
根据行号设置断点
break 11
根据函数名称设置断点
break foo
break del 断点编号
ev $name
ev $name = ‘zhangsan’
info b
操作 | 简写 | 说明 |
---|---|---|
run | r | 开始执行脚本 |
step | s | 执行下一步 |
next | n | 跳出深层函数的下一步 |
ev | — | 执行一个表达式 |
break | b | 增加一个断点 |
break del | b d | 通过id 删除一个断点 |
continue | c | 继续执行 直到下一个断点 (会进入深层函数的断点) |
until | u | 继续执行 直到下一个断点(不会进入深层函数的断点) |