需要打印所有函数调用drupal make -- debugging 领域 drupal 相关 的问题

Need to print all the function calls Drupal makes


3
vote

问题

中文

我需要检查所有函数调用drupal在它加载页面(即使没有错误)。我猜调试软件可以这样做,但我还想知道没有xdebug等的方法。

我找到了这个链接: https://drupal.stackexchange.com/questions/545/how-to-debug-drupal < / a> 但我不确定在哪里可以参加此代码:

  <?php $bt = debug_backtrace(); foreach ($bt as $key => $value) {   if ($key == 0) {     continue;   }   unset($bt[$key]['args']);   unset($bt[$key]['object']); } drupal_set_message(str_replace('    ', '&nbsp;&nbsp;&nbsp;&nbsp;', nl2br(htmlentities(print_r($bt, TRUE))))); ?>   
英文原文

I need to examine all the function calls Drupal makes during it loads a page (even if there are no errors). I guess debugging software can do this but I would also like to know a way to do this without xdebug etc.

I found this link: https://drupal.stackexchange.com/questions/545/how-to-debug-drupal but I'm not sure where to put for example this code:

<?php $bt = debug_backtrace(); foreach ($bt as $key => $value) {   if ($key == 0) {     continue;   }   unset($bt[$key]['args']);   unset($bt[$key]['object']); } drupal_set_message(str_replace('    ', '&nbsp;&nbsp;&nbsp;&nbsp;', nl2br(htmlentities(print_r($bt, TRUE))))); ?> 
  

回答列表

4
 
vote
vote
最佳答案
 

我会推荐使用 xdebug 而不是任何其他方法。

xdebug可以轻松安装,然后您必须做的就是在您的网站上启用分析和导航。

它不仅列出了所有函数调用,但它计算请求期间调用多少次以及函数调用,因此您知道完全在哪里可以查看瓶颈。

可以使用 webgrind (浏览器为基础)或(kde / linux),包括其他。

这更有效,因为您没有用代码篡改和用调试语句乱丢。

 

I would recommend using Xdebug as opposed to any other methods.

Xdebug can easily be installed and then all you have to do is enable profiling and navigate around your site.

Not only does it list all function calls but it counts how many times each is called during a request and also times the function call, so you know exactly where to look to resolve bottlenecks.

The results can be viewed using Webgrind (browser-based) or KCacheGrind (KDE/linux), amongst others.

This is more efficient because you are not tampering with the code and littering it with debug statements.

 
 
1
 
vote

单页视图期间的函数调用数量可能很多。我不知道这个号码,但我的猜测是它是几千。如果要记录所有这些数据,则不应将其发布到屏幕,而是在文件中写入其中,如 dd devel 模块有。

如果要记录所有函数调用,则应从结束开始,该函数在Drupal页面中调用。您可以启动的最后一个功能之一是 drupal_page_footer 。您可以在该函数中添加 998876663

然后,您必须通过所有功能,并为这些功能调用的所有功能添加 debug_backtrace 。然后你必须经过 debug_backtrace 中列出的所有新函数,你刚刚添加并重复上述步骤,直到您或计算机窒息。

可以这样做,但是要获取任何有用的东西,你需要一个配置文件工具,它可以在几秒钟内完成所有这一切而不是几小时。这是计算机擅长的地方:递归

 

The number of function calls during a single page view can be quite a lot. I don't know the number, but my guess is that it's several thousand. If you want to log all of this data, you shouldn't post it to the screen, but instead write it in a file, like the dd function that the devel module has.

If you want to log all function calls, you should start by the end, that last function that is called in a drupal page. One of the last functions where you could start is drupal_page_footer. You can add the debug_backtrace in that function.

Then you would have to go through all the functions and add debug_backtrace for all the functions that those functions call. Then you would have to go through all the new functions listed in the debug_backtrace you just added and repeat the above step until you or your computer chokes.

It's possible to do this, but to get anything useful you will need a profile tool, which can do all of this in seconds instead of hours. This is where computers excels: recursion.

 
 
0
 
vote

如果您需要打印所有函数调用(例如,只需逗号分隔的名称),请尝试:

  print implode(', ', array_column(debug_backtrace(), 'function'));   

注意: array_column() 是php&gt的一部分= 5.5。 0

 

If you need to print all the function calls (e.g. just their names separated by comma), try:

print implode(', ', array_column(debug_backtrace(), 'function')); 

Note: array_column() is part of PHP >=5.5.0

 
 

相关问题

2  如何检查拨出电子邮件内容?  ( How to inspect outgoing email content ) 
有几个文件从我的网站发送电子邮件:规则,触发器,用户,... 我正在寻找一个设置 drupal_set_message() 并打印电子邮件内容。代码中的哪个地方是最好的地方? ...

1  如何使用Devel模块查看创建URL的内容?  ( How to use devel module to see what creates an url ) 
我想知道是什么创建一个站点的URL,例如视图,面板等。 我应该在"执行PHP" 上的Devel模块上写入哪个命令? 谢谢 ...

1  管理员叠加中的URL编码 - 中断叠加  ( Url encoding in admin overlays breaks overlay ) 
我有一个没有内容的Drupal 7的新安装,并且安装了一些额外的模块。最近,正如我已经在管理领域导航的那样,叠加的URL在它们中逃脱了HTML,如下所示: http://mywebsite.com/#overlay=%3Fq%3Dadmin/config 当然应该是表示 http://mywebsite...

3  导致错误“呼叫时间通过引用已被推荐已被推荐?”  ( What causes the error call time pass by reference has been deprecated ) 
我的理解是PHP 5.3中的对象全部通过引用,因此使用&amp; $符号是不必要的。我的问题是使用Date_views模块我收到此错误。 Deprecated function: Call-time pass-by-reference has been deprecated in _registry_check...

6  Devel KPR,DPR,DPM等仅在缓存冲洗后打印  ( Devel kpr dpr dpm etc only print after cache flush ) 
我正在编写一个小模块并使用 devel 打印功能(DPR,KPR,DPM等)打印出一些值。 但是,我在刷新某些缓存后,我只能看到页面中的值。如果我只是重新加载页面或转到它,我什么都不看。这对于消息区域和常规调试打印功能是如此。这是预期的吗? 我已登录为admin,以便我认为普通页面缓存已关闭。 (这是d7。) ...

8  调试#ajax和formapi  ( Debugging ajax and formapi ) 
在使用 #ajax 时,查看当前 $form_state 变量的最简单方法是什么?? 有没有办法,我可以获得 dpm() 在每个ajax加载时自动更新? 如果它很重要,我正在测试节点提交表单上的ajax。 ...

1  DPM不显示表单返回值  ( Dpm does not display form return values ) 
我刚刚在Drupal 6上启用了Devel模块,并使用 dpm($form) 对我显示了值,但它不会再显示值。主要是这个问题在这里?有没有办法查看这些价值? 感谢 ...

2  如何使Drush rsync @dev @staging排除了某个目录?  ( How to make drush rsync dev staging exclude some directories ) 
我使用以下 drush 命令同步开发和测试环境。 drush rsync @dev @staging drush sql-sync @dev @staging 如何设置疏水以从此同步过程中排除某些目录(例如站点/全部/模块/ devel )? 我不想要 devel ...

0  DSM输出间歇地显示出来  ( Dsm output intermittently shows up ) 
由于某种原因,我的DSM输出只是偶尔出现。没有什么重大在模板上改变我称之为。它将出现,然后在刷新时,随机重新出现10次刷新。 任何想法会导致这种行为是什么? ...

4  如何加快Drupal 7调用_theme_process_registry?  ( How to speed up drupal 7 calls to theme process registry ) 
使用 xhprof php profiler我可以看到有多于100000个呼叫 function_exists 每次用户访问Drupal 7.8页面,大多来自 _theme_process_registry 。 如何限制这些呼叫的数量或缓存? ...

0  转储节点时返回递归?  ( Getting around recursion when dumping a node ) 
我正在使用模板,我正在使用 kpr() devel 查看 $variables 中定义的值。其中一个是有问题的节点,显示的是显示的大无限符号,指示递归。 是否有任何方法来绕过它来看看我在节点对象中实际上有哪些数据? 在创建递归的节点中是什么? ...

1  规则中的自定义PHP代码与devel的一个不同  ( Custom php code in rules differs from devels one ) 
我面临着一个非常乏味的问题,因为在Devel的PHP执行器中显示的结果与自定义PHP代码的结果不同。我想做的是发送私人邮件(感谢privatemsg模块)到某些用户无法使用privatemsg规则集成选择。 要发送一个新的private_msg,我们必须使用" privatemsg_new_thread($recip...

8  如何使用dsm()devel函数打印我的表单的$表单数组?  ( How to use the dsm devel function to print the form array of my form ) 
我想使用devel模块的 dsm() 功能打印 $form 阵列的形式,其中 99887669 是<代码> <script>0 。怎么做? ...

3  如何调试Drupal表单  ( How to debug drupal forms ) 
有时候,我通过一个摇篮曲的视频,向我展示了如何单击表单,并使用devel模块使用krumo查看其所有元素。 但我搜索了所有互联网,我无法找到此功能。如何单击表单,查看Krumo中的所有元素? ...

3  网站在离线模式下,任何方式调试如何发生这种情况?  ( Site in offline mode any way to debug how this happened ) 
我今天早上来到离线模式下找到我的公司网站。我亲自检查了唯一的其他网站管理员,而且其他用户都没有能够关闭网站。我在我昨晚离开之前使用备份模块,但我备份了数百次,从未遇到过脱机模式的模块。 数据库中是否存在任何日志或任何位置,其中可能会记录此活动?我们不允许用户登录我们的Drupal网站,只是我们自己的编辑和 我累了go...

2  无法访问模块设置(Devel Module)  ( Cant access module settings devel module ) 
我有一个启用和工作的模块,但配置选项不会显示。 在这种情况下的模块是开发的,我在其他网站上使用没有问题。在本网站中,每当我单击Devel模块列表中的"配置" 时,它将需要我到配置页面,但没有Devel选项。 我已经清除了缓存并多次重新启用。模块肯定会启用,因为我可以使用 ddebug_backtrace() 等函数...

0  登录块已经消失了  ( The login block has vanished ) 
我在 / admin / structs / blocks 中没有改变它,它仍然存在。 所有我都可以认为我安装了几个模块来试用它们然后禁用它们,也许会导致它。 在任何情况下,我的用户无法登录,我有很大的麻烦。 如何进行调试问题?谢谢。 更新:我尚未登录(我看到"登录或注册到发表评论" )。即使我加载/用户/注销登...

2  有没有人使用过测试项目  ( Has anyone used beta profiling module ) 
对于我的大多数项目,我正在使用 devel 模块。最近,我看过其他模块分析 - 它还提供与视图和面板的集成。我正在考虑使用它,如上所述这里它是稳定的,但仍然缺乏视图和面板支持。所以不确定我应该使用它(我正在使用视图和面板)。 是否有任何使用此模块的人,并找到它工作(没有错误)? 或 你会推荐其他模块? 提前感谢。 ...

36  如何调试权限?  ( How do i debug permissions ) 
如何在Drupal 7中调试权限? 我使用核心报告,错误日志,devel模块错误日志,回溯和节点访问权限块,但有时它是不够的。 我还应该检查什么,了解为什么某些字段,视图或块没有向用户显示? 我也发现有一个 for drupal 6 我正在使用各种许可相关的第三方模块: - devel node access...

2  无法保存任何模块  ( Cannot save any modules ) 
每当我想要启用/禁用模块时,我就会给出不同的错误,如下面的误差。这些错误消息每次都会更改/启用模块。 "致命错误:内存不足(分配31981568)(在第278行中,尝试在/ homepages/4/d364988985/htdocs/sites/all/modules/views/modules/all/mods_d...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.