我喜欢使用别人的代码来节省时间。我想开始有效地调试我的脚本,以及我从其他开发人员那里继承的脚本。
我一直在阅读debug_backtrace()
,我不确定这是不是我正在寻找的。 p>
基本上,当一个类被实例化时,我想知道正在触发什么方法。 说实话,我想尽可能地知道,但是知道单个课程内部的内容会很棒。
<?php
require('aHugeComplicatedClass.php'); // sooooo many methods
try {
$obj = new aHugeComplicatedClass($params);
}
catch(Exception $ex){
var_dump($ex);
}
?>
从PHP关于debug_backtrace的文档中,看起来我需要将debug_backtrace()函数放在任何和所有类中的每个方法/函数中,只是为了查看它是如何到达的。
我要读这个太字面了。那将是一大堆修改。
所以,如果我有一个php文件,实例化一个类,我知道这个类是从其他类扩展的,那么调试该对象的最简单方法是什么?
答案 0 :(得分:0)
我会安装XDebug并将远程调试连接到您的IDE(例如PhpStorm或Eclipse),这样您就可以在所有错误上获得良好的堆栈转储,以及断开代码并检查堆栈和所有对象内部的能力闲暇时。
您还可以使用它来分析您的应用程序调用链,而无需进行任何代码更改(这听起来更像您想要的)。通过使用生成大日志文件的分析选项,您可以将这些日志加载到webgrind中,并直观地检查谁正在调用漂亮的树结构中的内容。
https://code.google.com/p/webgrind/
Zend工具链还可以提供开箱即用的这种更深层次的调试功能。
或者安装应用程序性能监视代理程序(如App Dynamics或New Relic)以进行类似的代码分析。这对于远程安装(即生产)非常有用,其中调试不是一种选择,并且分析是昂贵的。
答案 1 :(得分:0)
我们使用NuSphere PhpED来获取所有这些东西。它可以触发调试器停止指定的异常和/或错误,并显示完整的调用堆栈,可能包括php函数调用,php方法调用,嵌入式函数调用和嵌入式方法调用。
http://www.nusphere.com/products/phped.htm
我在开始时被告知他们的调试器是最好的并且可以确认这一点。它源于OSS项目
http://sourceforge.net/projects/dbg2/
使用PhpED IDE,我们可以运行完整的开发周期 - 编码,调试,分析,测试和上传到生产服务器。