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:wampwwwmeileleincludescls_mysql.php:471行,呼叫方法:query D:wampwwwmeileleincludescls_mysql.php:507行,呼叫方法:getAll D:wampwwwmeileleincludeslib_common.php:732行,呼叫方法:getAllCached D:wampwwwmeileleincludesinit.php:113行,呼叫方法:load_config D:wampwwwmeileleindex.php:4行,呼叫方法:include_once
一目瞭然,一直找到了入口,太強悍了。以後除錯又多了一種辦法
相關文章
- PHP-stacktrace: PHP 程式外檢視函式呼叫堆疊PHP函式
- 函式呼叫中堆疊的個人理解函式
- 從彙編視角解析函式呼叫中的堆疊運作函式
- main函式的入口函式AI函式
- VC++ 崩潰處理以及列印呼叫堆疊C++
- dll 入口函式函式
- 泛型鏈式堆疊泛型
- 使用DbgHelp獲取函式呼叫堆疊之inline assembly(內聯彙編)法函式inline
- thinkphp console 命令列列印錯誤呼叫堆疊PHP命令列
- PHP 列印函式之 print print_rPHP函式
- php列印負載函式、Linux awk列印負載PHP負載函式Linux
- php 獲取函式被呼叫位置PHP函式
- 從彙編角度來理解linux下多層函式呼叫堆疊執行狀態Linux函式
- 列印函式 lodop函式
- 函式名/函式地址/函式指標函式指標
- [golang]如何看懂呼叫堆疊Golang
- ACM – 第四章 gcc,函式,堆疊,以及C語言ACMGC函式C語言
- php鏈式呼叫PHP
- 子函式呼叫函式
- 函式呼叫棧函式
- js函式 函式自呼叫 返回函式的函式 (閉包)JS函式
- php函式PHP函式
- PHP 函式PHP函式
- php 函式PHP函式
- 深入理解JavaScript執行上下文、函式堆疊、提升的概念JavaScript函式
- 類函式和物件函式 PHP函式物件PHP
- Vue原始碼: 建構函式入口Vue原始碼函式
- PostgreSQL函式裡呼叫函式(SETOF + RETURN QUERY)SQL函式
- JS中函式內套函式的呼叫JS函式
- 利用backtrace和backtrace_symbols函式列印呼叫棧資訊Symbol函式
- 外部函式的呼叫函式
- gdb 如何呼叫函式?函式
- 函式指標呼叫函式指標
- PHP 每日一函式 — 字串函式 crypt ()PHP函式字串
- PHP 每日一函式 — 字串函式 chr ()PHP函式字串
- PHP 常用函式PHP函式
- PHP匿名函式PHP函式
- PHP常用函式PHP函式