phpdbg使用之二(cli环境使用)

讲解关于phpdbg的相关使用方法


参考文档 : https://github.com/bwoebi/phpdbg-docs

1. phpdbg的启用

phpdbg -e /path/to/script.php

1.1 phpdbg可用的选项

选项 用例 说明
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 打印版本号

1.2 phpdbg中p选项的使用

操作 说明
-p 输出主要的执行上下文
-p* 输出整个文件中出现的 opcodes (包括 classes 和 functions)
-p=function_name 输出这个文件中给定函数名称的 opcodes
-p=class_name:: 输出给定类的所有方法的 opcodes
-p=class_name::method 输出给定方法的opcodes

2. 控制代码运行

2.0 run启动运行

run

2.1 step单步调试

行号单步调试(默认)

set stepping line

opcode单步调试

set stepping opcode

然后执行

step

或者执行

s

注意:step需要在run之后执行

2.2 next跨越单步调试

什么意思?比如

function a()
{
	$value = b()//在此设置断点 A
	return $value}

function b()
{
	return true;
}

在A处设置断点,使用 step 会进入 b 函数
如果使用 next 则会直接跳过 b 到 return $value;

2.3 until到下一个断点

此命令直接从当前执行代码所在行到下一个断点,如果没有断点
则直接运行完成。

2.4 leave跳过到下一条return

leave跳过函数起始到return之前的所有断点,该函数如果有调用
其他函数,则不会进入深层函数的return

2.5 finish完整执行

finish 跳过所有断点直接执行

3. 断点的设置

3.1 设置断点

根据行号设置断点

break 11

根据函数名称设置断点

break foo

3.2 删除断点

break del 断点编号

3.3 设置和打印变量

ev $name

ev $name = ‘zhangsan’

3.4 查看所有断点

info b

3.5 命令简写

操作 简写 说明
run r 开始执行脚本
step s 执行下一步
next n 跳出深层函数的下一步
ev 执行一个表达式
break b 增加一个断点
break del b d 通过id 删除一个断点
continue c 继续执行 直到下一个断点 (会进入深层函数的断点)
until u 继续执行 直到下一个断点(不会进入深层函数的断点)

猜你喜欢

转载自blog.csdn.net/wujiangwei567/article/details/85780267
今日推荐