0

我喜欢使用别人的代码来节省时间。我想开始有效地调试我的脚本,以及我从其他开发人员那里继承的脚本。

我一直在阅读debug_backtrace(),但我不确定它是否是我正在寻找的。

基本上,当一个类被实例化时,我想知道正在触发哪些方法。老实说,我想尽可能多地知道,但是知道一个班级里发生了什么会很棒。

<?php
require('aHugeComplicatedClass.php'); // sooooo many methods

try {

   $obj = new aHugeComplicatedClass($params);

}
catch(Exception $ex){

   var_dump($ex);

}

?>

从 PHP 的关于debug_backtrace的文档看来,我需要将 debug_backtrace() 函数放在任何和所有类中的每个方法/函数中,只是为了看看它是如何到达的。

我得读这个太字面了。那将是大量的修改。

所以,如果我有一个实例化一个类的 php 文件,并且我知道这个类是从其他类扩展而来的,那么调试该对象的最简单方法是什么?

4

2 回答 2

0

我们使用 NuSphere PhpED 来获取所有这些东西。它可以触发调试器在指定的异常和/或错误上停止,并显示完整的调用堆栈,其中可能包括 php 函数调用、php 方法调用、嵌入式函数调用和嵌入式方法调用。

http://www.nusphere.com/products/phped.htm

一开始我就被告知他们的调试器是最好的,并且可以确认这一点。它源于OSS项目

http://sourceforge.net/projects/dbg2/

使用 PhpED IDE,我们运行整个开发周期——编码、调试、分析、测试和上传到生产服务器。

于 2014-06-02T15:28:43.083 回答
0

我会安装 XDebug 并将远程调试连接到您的 IDE(例如 PhpStorm 或 Eclipse),这样您就可以在所有错误上获得很好的堆栈转储,以及在您闲暇时断点代码并检查堆栈和所有对象内部的能力.

http://xdebug.org/

您还可以使用它来分析您的应用程序调用链,而无需进行任何代码更改(这听起来更像您想要的)。通过使用生成大日志文件的分析选项,您可以将这些日志加载到 webgrind 中,并在漂亮的树结构中直观地检查谁在调用什么。

https://code.google.com/p/webgrind/

Zend 工具链还将提供这种开箱即用的更深入的调试功能。

或者,安装应用程序性能监控代理,例如 App Dynamics 或 New Relic,以进行类似的代码分析。这对于无法进行调试且分析成本高昂的远程安装(即生产)最有用。

于 2014-05-21T12:36:01.647 回答