我可以为xdebug分析器手动指定开始分析的位置吗?

41

我已经在我的XAMPP安装中启用了xDebug profiling,并且它可以正常工作。

现在我想问一下,是否有一种方法可以在我的源代码中指定何时使用xDebug进行profiling。

更具体地说,我想创建一个WordPress插件,并且我想要从插件的起始点开始profiling,并在插件的结束点停止profiling。

这可行吗?

注意:以上只是一个示例。它可以是一个CakePHP插件或我需要profiling的新PHP类。

2个回答

64

编辑:根据如何在运行时打开/关闭Xdebug分析, 您实际上无法在运行时启用/禁用(例如每个函数调用)。

您可以选择性地在每个请求中启用分析器,这通常更好。 为了实现此行为,请设置以下设置:

对于xdebug 3 (升级指南):

xdebug.mode = profile;
xdebug.start_with_request = trigger;

对于xdebug 2:

xdebug.profiler_enable_trigger=1
xdebug.profiler_enable=0

请注意,我们禁用了分析器,并仅启用触发器。从您的浏览器传递XDEBUG_PROFILE=1。

http://example.com/file.php?XDEBUG_PROFILE=1

你也可以将此参数作为POST或COOKIE传递。更多信息请参考:

  1. http://xdebug.org/docs/profiler#starting
  2. http://xdebug.org/docs/all_settings#profiler_enable_trigger

2
我已经将这个答案点为负,因为它实际上没有回答问题。我认为问题是想要在php中动态地打开和关闭剖析器,允许对特定的代码进行剖析,而不是整个请求。 - David Yell
13
因为明确提到了无法在运行时切换开/关状态,而且这个答案确实回答了我所搜寻的问题标题,所以我点了赞。 - xiankai
5
感谢您的赞同,正如前面的人所说,这个答案回答了问题。感谢提供信息和正确的答案。 - Dave Goodchild
2
不需要传递 XDEBUG_PROFILE=1,只需传递 XDEBUG_PROFILE 即可。 - RightHandedMonkey

10

正如Laith所说,您不能选择何时启动xDebug进行分析和何时停止分析。但是,另一个xDebug功能提供了这种灵活性:追踪(trace)。

分析(profiling)和追踪并不完全相同,但如果您到达了这里,可能追踪会满足您的需求。

要开始追踪,您必须使用此函数: xdebug_start_trace()

要停止追踪,您必须使用此函数: xdebug_stop_trace()

有许多设置可用于更改追踪行为:

http://xdebug.org/docs/execution_trace


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接