PHP 打印調用函數入口地址(堆棧)


今天網站出現一個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

 

一目了然,一直找到了入口,太強悍了。以后調試又多了一種辦法

 

轉自 http://blog.csdn.net/newjueqi/article/details/6865722


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM