登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 首页 >> SoftHub关联区 >> SoftHub关联区 >> 主题: PHP 打印调用函数入口地址(堆栈),方便调式    [最新]
PHP 打印调用函数入口地址(堆栈),方便调式
clq
浏览(0) - 2018-12-01 16:30:30 发表 编辑

关键字: php

PHP 打印调用函数入口地址(堆栈),方便调式[zt]

http://blog.sina.com.cn/s/blog_4f9fc6e10100rhn5.html

 
今天网站出现一个BUG,然后直接在数据库类里面写日志,看是哪条SQL出了问题,SQL语句到是找到了,但是不知道这条SQL语句来自何处,于是就想啊,如果能有一个办法,查看当前正在运行的这个方法是被哪个方法调用的,以及上一个方法又是哪个方法调用的,以此类推,找到入口地址多好啊。不过以前自己也想过,也在网上去搜过,就是没有找到相关的办法,今天一同事(前辈)说JAVA里面这种调试用得很普遍,叫这种堆栈调试,我是就在网上搜PHP堆栈。居然被我找到了,然后把自己的办法写出来。
//调用堆栈函数,查找调用函数的源头,方便调试
function print_stack_trace()
{
    $array =debug_backtrace();
  //print_r($array);//信息很齐全
   unset($array[0]);
   foreach($array as $row)
    {
       $html .=$row['file'].':'.$row['line'].'行,调用方法:'.$row['function']."<p>";
    }
    return$html;
}
我在我的数据库的核心查询函数里面调用这个方法,打印结果如下:
D:\wamp\www\meilele\includes\cls_mysql.php:471行,调用方法:query

D:\wamp\www\meilele\includes\cls_mysql.php:507行,调用方法:getAll

D:\wamp\www\meilele\includes\lib_common.php:732行,调用方法:getAllCached

D:\wamp\www\meilele\includes\init.php:113行,调用方法:load_config

D:\wamp\www\meilele\index.php:4行,调用方法:include_once

一目了然,一直找到了入口,太强悍了。以后调试又多了一种办法


或者用下面的方法:

    $e = new Exception;
    var_dump($e->getTraceAsString());






总数:0 页次:1/0 首页 尾页  
总数:0 页次:1/0 首页 尾页  


该采集也在以下书单中



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2017 clq, All Rights Reserved
CLQ工作室 版权所有