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

简介: 今天网站出现一个BUG,然后直接在数据库类里面写日志,看是哪条SQL出了问题,SQL语句到是找到了,但是不知道这条SQL语句来自何处,于是就想啊,如果能有一个办法,查看当前正在运行的这个方法是被哪个方法调用的,以及上一个方法又是哪个方法调用的,以此类推,找到入口地址多好啊。

今天网站出现一个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

 

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

目录
相关文章
|
7月前
thinkphp5.1隐藏index.php入口文件
thinkphp5.1隐藏index.php入口文件
65 0
thinkphp5.1隐藏index.php入口文件
|
5月前
|
安全 数据安全/隐私保护
屏蔽修改wp-login.php登录入口确保WordPress网站后台安全
WordPress程序默认的后台地址wp-login.php,虽然我们的密码设置比较复杂,但是如果被软件一直扫后台入口,一来影响网站的速度增加服务器的负担,二来万一被扫到密码,那就处于不安全的境地。所以,我们最好将后台地址入口隐藏屏蔽起来,我们可以通过下面的命令实现隐蔽wp-login.php入口。
162 0
|
7月前
|
网络协议 PHP
php案例:判断这个是不是检测 IPv6 地址
php案例:判断这个是不是检测 IPv6 地址
php案例:判断这个是不是检测 IPv6 地址
|
定位技术 PHP 数据格式
php通过地址获得百度地图经纬度(逆地理编码)
php通过地址获得百度地图经纬度(逆地理编码)
109 0
|
PHP
PHP根据地址逆向解析经纬度
PHP根据地址逆向解析经纬度
119 0
|
定位技术 PHP UED
php通过地址获得百度地图经纬度(地理编码)
php通过地址获得百度地图经纬度(地理编码)
158 0