【问题标题】:Debugging PHP Code with debug_backtrace使用 debug_backtrace 调试 PHP 代码
【发布时间】:2014-05-21 11:06:22
【问题描述】:

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

我一直在阅读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 文件,并且我知道这个类是从其他类扩展而来的,那么调试该对象的最简单方法是什么?

【问题讨论】:

    标签: php debugging debug-backtrace


    【解决方案1】:

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

    http://xdebug.org/

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-31
        • 2011-12-10
        • 1970-01-01
        • 2014-09-25
        • 2017-10-02
        • 1970-01-01
        相关资源
        最近更新 更多