当前位置: 首页 > 工具软件 > PHPDBG > 使用案例 >

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

方寒
2023-12-01

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


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

1. phpdbg的启用

phpdbg -e /path/to/script.php

1.1 phpdbg可用的选项

选项用例说明
q-q不显示欢迎语
v-vEnable 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 命令简写

操作简写说明
runr开始执行脚本
steps执行下一步
nextn跳出深层函数的下一步
ev执行一个表达式
breakb增加一个断点
break delb d通过id 删除一个断点
continuec继续执行 直到下一个断点 (会进入深层函数的断点)
untilu继续执行 直到下一个断点(不会进入深层函数的断点)
 类似资料: