php源码断点调试

http://www.vicenteforever.com/2013/12/php-src-breakpoint/


通过断点调试php文件,从而知道其在php内部执行流程。

一、下载php源码(5.5.6)

http://www.php.net/get/php-5.5.6.tar.gz/from/a/mirror

二、编译

下载源码后,解压缩,到php-src目录下.

为了尽快得到可以测试的环境,我们仅编译一个最精简的PHP。通过执行 ./configure –disable-all来进行配置。 以后如果需要其他功能可以重新编译。如果configure命令出现错误,可能是缺少PHP所依赖的库,各个系统的环境可能不一样。 出现错误可根据出错信息上网搜索。 直到完成configure。configure完成后我们就可以开始编译了。

1
2
./configure --disable-all
make

在*nix下编译过程序的读者应该都熟悉经典的configure make,make install吧。执行make之后是否需要make install就取决于你了。 如果install的话最好在configure的时候是用prefix参数指定安装目录, 不建议安装到系统目录, 避免和系统原有的PHP版本冲突。 在make 完以后,在sapi/cli目录里就已经有了php的可以执行文件. 执行一下命令

1
./sapi/cli/php -v

三、查看程序中的符号表

1
2
3
4
<?php
$a = 1;
$b = 2;
echo $a + $b ;

上面是我们的测试代码,我们需要查看echo在php源码中是如何运行的。nm命令是用来查看指定程序中的符号表相关内容的工具。也可以查看出在php源码中的具体使用方法。

1
nm sapi/cli/php|grep echo

四、gdb调试

1
2
3
gdb sapi/cli/php
B zend_do_echo //设置断点
run / var /test/test.php

首先,调试sapi/cli/php文件,进入gdb调试模式
设置断点zend_do_echo
运行文件

会显示zend_do_echo在这个执行流程中,具体在哪个文件中。

输入bt命令,可以完整的查看出test.php文件中echo命令在cli模式下执行过程。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值