PHP 用VLD查看php的Opcode级执行
VLD是php的一个扩展,用于查看php的Opcode级的操作。VLD包的下载网址:http://pecl.php.net/package/vld
用php的pecl安装方法:pecl install channel://pecl.php.net/vld-0.10.1
使用方法如:
1、用于测试的文件为testvld.php,内容如下
2、根据各自的环境来用php命令加-dvld.active=1来执行文件,如本人环境中执行命令:/usr/local/php-5.6.4/bin/php -c /usr/local/php-5.6.4/php.ini-dvld.active=1 testvld.php
3、通过vld对testvld.php执行结果如下:
Finding entry points
Branch analysis from position: 0
Jump found. Position 1 = -2
filename: /home/file/testvld.php
function name:(null)
number of ops:5
compiled vars:none
line #* E I O op fetch extreturnoperands
-------------------------------------------------------------------------------------
2 0E > NOP
9 1 SEND_VAL 10
2 DO_FCALL 1$0 '_count'
3 ECHO $0
11 4 > RETURN 1
branch: #0; line: 2- 11; sop: 0; eop: 4; out1:-2
path #1: 0,
Function _count:
Finding entry points
Branch analysis from position: 0
Jump found. Position 1 = 3, Position 2 = 5
Branch analysis from position: 3
Jump found. Position 1 = -2
Branch analysis from position: 5
Jump found. Position 1 = -2
filename: /home/file/testvld.php
function name:_count
number of ops:12
compiled vars:!0 = $num
line #* E I O op fetch extreturnoperands
-------------------------------------------------------------------------------------
2 0E > RECV !0
3 1 IS_EQUAL ~0 !0, 0
2 > JMPZ ~0, ->5
4 3 > > RETURN 0
5 4* JMP ->11
6 5 > INIT_FCALL_BY_NAME '_count'
6 SUB ~1 !0, 1
7 SEND_VAL ~1
8 DO_FCALL_BY_NAME 1$2
9 ADD ~3 !0, $2
10 > RETURN ~3
8 11* > RETURN null
branch: #0; line: 2- 3; sop: 0; eop: 2; out1: 3; out2: 5
branch: #3; line: 4- 4; sop: 3; eop: 3; out1:-2
branch: #5; line: 6- 8; sop: 5; eop: 11
path #1: 0, 3,
path #2: 0, 5,
End of function _count
重点分析:
number of ops:Opcode级的操作总个数
列表中的op:具体的操作名
页:
[1]