php 跟踪代码的执行,8.5.2 使用Xdebug跟踪代码执行

8.5.2 使用Xdebug跟踪代码执行

Xdebug的很多功能是以附加的调试语句的形式出现的,可以使用这些语句获得关于应用程序的附加信息。例如,可以查找到当前场景调用的类、方法或者函数,以及调用起始的文件和代码行。例如,代码清单8-8演示了一个简单的调用跟踪信息。

代码清单8-8 使用Xdebug跟踪调用栈

class MyClass {

public function myCaller($other) {

$other->myCallee();

}

}

class MyOther {

public function myCallee() {

printf("%s", xdebug_call_class());

printf("::%s",    xdebug_call_function());

printf(" in %s", xdebug_call_file());

printf(":%s\n",      xdebug_call_line());

}

}

$a = new MyClass();

$b = new MyOther();

$a->myCaller($b);

这个例子会输出以下信息。

MyClass::myCaller in /path/to/xdebug.php:4

你还可以调用xdebug_get_function_stack()方法,它会返回到这一点为止的关于函数调用信息的一个数组。这个函数与标准的debug_backtrace() PHP函数很相似。

如果需要确定某个脚本两点之间调用过的所有函数和方法,例如当执行过程进入另外一个组件时,就可以使用Xdebug函数跟踪功能。这些跟踪记录了对某个文件的所有调用情况,可用于事后分析。使用以下函数启动和停止函数跟踪功能。

* void xdebug_start_trace(string filename [, int options])。这个函数用来启动跟踪函数调用。options值是一个位掩码值,它允许使用XDEBUG_TRACE_ APPEND常量添加跟踪记录文件,使用XDEBUG_TRACE_COMPUTERIZED常量创建计算出的结果的输出格式,甚至可以使用XDEBUG_TRACE_HTML常量创建一个HTML格式的表格跟踪记录。

* void xdebug_stop_trace()。当希望停止跟踪功能时,可以调用这个函数。如果不调用stop函数,跟踪功能将在执行过程结束时自动停止。

代码清单8-9显示了如何跟踪方法调用。这个例子修改了之前的代码,将最终的调用代码封装到跟踪语句中。

代码清单8-9 使用xdebug_start_trace跟踪代码执行

xdebug_start_trace('trace');

$a->myCaller($b);

xdebug_stop_trace();

TRACE START [16:53:57]

0.0010      57964    -> MyClass->myCaller() /code/xdebug.php:21

0.0011      58104     -> MyOther->myCallee() /code/xdebug.php:4

0.0011      58104      -> xdebug_call_class() /code/xdebug.php:10

0.0011      58128      -> printf() /code/xdebug.php:10

0.0014      58196      -> xdebug_call_function() /code/xdebug.php:11

0.0015      58196      -> printf() /code/xdebug.php:11

0.0016      58196      -> xdebug_call_file() /code/xdebug.php:12

0.0016      58244      -> printf() /code/xdebug.php:12

0.0017      58244      -> xdebug_call_line() /code/xdebug.php:13

0.0017      58244      -> printf() /code/xdebug.php:13

0.0018      58244   -> xdebug_stop_trace() /code/xdebug.php:22

0.0019      58244

TRACE END [16:53:57]

Xdebug还允许获得脚本的当前内存使用情况、高峰内存使用情况,以及脚本开始运行之后所花费的时间。

【责任编辑:董书 TEL:(010)68476606】

点赞 0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值