日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

PHP如何打印跟蹤調試信息

瀏覽:23日期:2022-09-07 16:04:35

對于大部分編譯型語言來說,比如 C 、 Java 、 C# ,我們都能很方便地進行斷點調試,但是 PHP 則必須安裝 XDebug 并且在編輯器中進行復雜的配置才能實現斷點調試的能力。不過,如果只是簡單的調試并且查看堆棧回溯的話,其實 PHP 已經為我們準備好了兩個函數,能夠讓我們非常方便的看到程序運行時的調用情況。

debug_backtrace()

從這個方法的字面意思上就可以看出,它的意思就是調試回溯,返回的也正是一段回溯信息的數組。

function a_test($str){ echo 'Hi: $str', PHP_EOL; var_dump(debug_backtrace());}var_dump(debug_backtrace());a_test('A');// Hi: A/Users/zhangyue/MyDoc/博客文章/dev-blog/php/202004/source/PHP打印跟蹤調試信息.php:7:// array(1) {// [0] =>// array(4) {// ’file’ =>// string(93) '/Users/zhangyue/MyDoc/博客文章/dev-blog/php/202004/source/PHP打印跟蹤調試信息.php'// ’line’ =>// int(12)// ’function’ =>// string(6) 'a_test'// ’args’ =>// array(1) {// [0] =>// string(1) 'A'// }// }// }

這個方法必須在函數中調用,在函數方法外部使用是不會有內容的。從內容中看,它輸出了關于這個函數的 __FILE__ 、 __LINE__ 、 __FUNCTION__ 、$argv 等信息。其實就是關于當前打印這行所在函數的相關內容。

我們當然也可以多嵌套幾層函數來看一下打印出的內容是什么。

function b_test(){ c_test();}function c_test(){ a_test('b -> c -> a');}b_test();// Hi: b -> c -> a// /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202004/source/PHP打印跟蹤調試信息.php:7:// array(3) {// [0] =>// array(4) {// ’file’ =>// string(93) '/Users/zhangyue/MyDoc/博客文章/dev-blog/php/202004/source/PHP打印跟蹤調試信息.php'// ’line’ =>// int(37)// ’function’ =>// string(6) 'a_test'// ’args’ =>// array(1) {// [0] =>// string(11) 'b -> c -> a'// }// }// [1] =>// array(4) {// ’file’ =>// string(93) '/Users/zhangyue/MyDoc/博客文章/dev-blog/php/202004/source/PHP打印跟蹤調試信息.php'// ’line’ =>// int(33)// ’function’ =>// string(6) 'c_test'// ’args’ =>// array(0) {// }// }// [2] =>// array(4) {// ’file’ =>// string(93) '/Users/zhangyue/MyDoc/博客文章/dev-blog/php/202004/source/PHP打印跟蹤調試信息.php'// ’line’ =>// int(40)// ’function’ =>// string(6) 'b_test'// ’args’ =>// array(0) {// }// }// }

沒錯,數組的輸出順序就是一個棧的執行順序,b_test() 最先調用,所以它在棧底,對應的輸出也就是數組中的最后一個元素。

在類中也是類似的使用方法。

class A{ function test_a(){$this->test_b(); } function test_b(){var_dump(debug_backtrace()); }}$a = new A();$a->test_a();// /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202004/source/PHP打印跟蹤調試信息.php:90:// array(2) {// [0] =>// array(7) {// ’file’ =>// string(93) '/Users/zhangyue/MyDoc/博客文章/dev-blog/php/202004/source/PHP打印跟蹤調試信息.php'// ’line’ =>// int(87)// ’function’ =>// string(6) 'test_b'// ’class’ =>// string(1) 'A'// ’object’ =>// class A#1 (0) {// }// ’type’ =>// string(2) '->'// ’args’ =>// array(0) {// }// }// [1] =>// array(7) {// ’file’ =>// string(93) '/Users/zhangyue/MyDoc/博客文章/dev-blog/php/202004/source/PHP打印跟蹤調試信息.php'// ’line’ =>// int(95)// ’function’ =>// string(6) 'test_a'// ’class’ =>// string(1) 'A'// ’object’ =>// class A#1 (0) {// }// ’type’ =>// string(2) '->'// ’args’ =>// array(0) {// }// }// }

在類中使用的時候,在數組項中會多出一個 object 字段,顯示的是這個方法所在類的信息。

debug_backtrace() 的函數聲明是:

debug_backtrace ([ int $options = DEBUG_BACKTRACE_PROVIDE_OBJECT [, int $limit = 0 ]] ) : array

其中 options 是有兩個常量可以定義,DEBUG_BACKTRACE_PROVIDE_OBJECT 表明是否填充 'object' 的索引;DEBUG_BACKTRACE_IGNORE_ARGS 是否忽略 'args' 的索引,包括所有的 function/method 的參數,能夠節省內存開銷。limits 可用于限制返回堆棧幀的數量,默認為0返回所有的堆棧。

debug_backtrace() 以及下面要介紹的 debug_print_backtrace() 方法都是支持 require/include 文件以及 eval() 中的代碼的,在嵌入文件時,會輸出嵌入文件的路徑,這個大家可以自行嘗試。

debug_print_backtrace()

這個方法從名稱也可以看出,它會直接打印回溯內容,它的函數聲明和 debug_backtrace() 是一樣的,不過 $options 默認是 DEBUG_BACKTRACE_IGNORE_ARGS ,也就是說,它只打印調用所在文件及行數。

function a() { b();}function b() { c();}function c(){ debug_print_backtrace();}a();#0 c() called at [/Users/zhangyue/MyDoc/博客文章/dev-blog/php/202004/source/PHP打印跟蹤調試信息.php:144]#1 b() called at [/Users/zhangyue/MyDoc/博客文章/dev-blog/php/202004/source/PHP打印跟蹤調試信息.php:140]#2 a() called at [/Users/zhangyue/MyDoc/博客文章/dev-blog/php/202004/source/PHP打印跟蹤調試信息.php:151]

另外就是這個函數不需要使用 var_dump() 或 print_r() 進行輸出,直接使用這個函數就會進行輸出。能夠非常快捷方便的讓我們進行調試,比如在 laravel 這類大型框架中,我們在控制器需要查看堆棧信息時,就可以使用 debug_print_backtrace() 快速地查看當前的堆棧調用情況。而 debug_backtrace() 如果沒有指定 $options 的話,則會占用非常大的內存容量或者無法完整顯示。

總結

今天介紹的這兩個函數能夠靈活地幫助我們調試代碼或者了解一個框架的調用情況。當然,在正式的情況下還是推薦使用 Xdebug 加上編輯器的支持來進行斷點調試,因為使用 debug_backtrace() 這兩個方法我們無法看到變量的變化情況。

測試代碼:

github.com/zhangyue050…

以上就是PHP如何打印跟蹤調試信息的詳細內容,更多關于PHP打印調試信息的資料請關注好吧啦網其它相關文章!

標簽: PHP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产乱码精品一区二区亚洲| 日韩精品一区二区三区中文| 国产精品入口久久| 精品视频在线观看网站| 999精品色在线播放| 久久成人亚洲| 国产精品一区二区美女视频免费看| 成人在线超碰| 性色av一区二区怡红| 国产欧美亚洲精品a| av免费不卡国产观看| 9色国产精品| 国产欧美成人| 激情综合亚洲| 久久国产三级精品| 久久亚洲国产| 国产探花在线精品一区二区| 日韩欧美在线中字| 日本一区中文字幕| 欧美日韩视频网站| 日本欧美一区二区在线观看| 欧美成a人免费观看久久| 日韩三级精品| 99精品视频在线观看免费播放| 免费观看在线色综合| 成人精品高清在线视频| 蜜桃免费网站一区二区三区| 精品国产欧美日韩一区二区三区| 中文一区在线| 精品精品99| 中文字幕一区二区三区四区久久| 国产va免费精品观看精品视频| 欧美特黄一区| 国产成人精品福利| 婷婷综合国产| 五月天久久777| 老牛国内精品亚洲成av人片| 久久亚洲不卡| 欧美成人基地 | 中文字幕一区久| 免费在线欧美视频| 日本精品黄色| 久久激情五月婷婷| 亚洲一级黄色| а√天堂中文在线资源8| 久久精品av麻豆的观看方式| 国产精品毛片| 久久久精品五月天| 精品午夜av| 久久国产三级| 日本 国产 欧美色综合| 99久久99久久精品国产片果冰| 国产精品magnet| 日韩精品中文字幕一区二区| 亚洲激情二区| 亚洲成人一区在线观看| 免费在线观看一区| 日本成人在线视频网站| 免费观看久久av| 桃色av一区二区| 精品视频一区二区三区在线观看| 欧美一级网址| 日本亚洲不卡| 蜜臀va亚洲va欧美va天堂| 婷婷综合在线| 999视频精品| 日韩影院二区| 精品国产欧美日韩| 国产精品视频一区二区三区综合| 视频一区日韩精品| 天堂va蜜桃一区二区三区| 九一国产精品| 久久视频国产| 中国字幕a在线看韩国电影| 麻豆精品少妇| 国产精品xxxav免费视频| 日韩av资源网| 日韩高清中文字幕一区| 亚洲精品女人| 日韩一区二区三区免费视频| 亚洲色图综合| 亚洲精品乱码日韩| 综合欧美精品| 综合激情一区| 中文字幕日韩亚洲| 综合在线一区| 四虎精品一区二区免费| 亚洲人www| 影音先锋久久精品| 中文字幕日本一区二区| 亚洲精品免费观看| 婷婷综合福利| 青草久久视频| 国产精品综合色区在线观看| 国产美女亚洲精品7777| 国产精品毛片久久久| 牛牛精品成人免费视频| 久久99蜜桃| 国产成人精品亚洲线观看| 色综合五月天| 成人久久一区| 好吊视频一区二区三区四区| 制服诱惑一区二区| 亚洲免费网址| 免费成人在线视频观看| 日韩中文字幕在线一区| 日韩高清在线不卡| 国产日本久久| 精品国产不卡| 久久久精品午夜少妇| 亚洲激情不卡| 亚洲精品日韩久久| 国产精品一级| 超碰成人av| 91成人网在线观看| 在线观看亚洲精品福利片| 欧美在线精品一区| 噜噜噜躁狠狠躁狠狠精品视频 | 亚洲成av在线| 久久久一本精品| 青青久久av| 亚洲激情中文| 国产精品外国| 综合亚洲视频| 欧美视频久久| 欧美国产另类| 成人一区而且| 久久久久久久久久久妇女| 136国产福利精品导航网址| 99久久久久| 在线综合亚洲| 中文字幕一区二区三区日韩精品 | 国产日韩在线观看视频| 国产精品亚洲人成在99www| 欧美激情 亚洲a∨综合| 久久一区国产| 日韩黄色大片| 最新亚洲一区| 日本成人精品| 国产精品一区二区av日韩在线| 欧美激情视频一区二区三区免费 | av一区二区高清| 日韩一级精品| 亚洲精品在线a| 国产精品一区二区中文字幕| 国模大尺度视频一区二区| 日韩精品91| 亚洲欧美视频| 欧美久久精品| 国产h片在线观看| 久久精品国产99久久| 日韩视频在线一区二区三区 | 99视频精品全部免费在线视频| 亚洲二区视频| 亚洲精品乱码久久久久久蜜桃麻豆| 青青国产精品| 国产一区二区三区天码| 激情六月综合| 日韩精品午夜视频| 你懂的国产精品| 欧美影院三区| 日韩国产欧美视频| 日本蜜桃在线观看视频| 午夜亚洲一区| 欧美激情精品| 欧美日韩国产亚洲一区| 91九色综合| 蜜臀国产一区| 亚洲免费成人av在线| 国产一区二区精品久| 91成人网在线观看| 91午夜精品| 亚洲四虎影院| 日本成人一区二区| 国产成人精品999在线观看| 一级欧洲+日本+国产| 国产精品亚洲综合久久| 999久久久91| 久久国产精品免费一区二区三区 | 亚洲精品三级| 9999国产精品| 在线看片日韩| 黑人精品一区| 日韩欧美中文字幕在线视频| 在线精品亚洲欧美日韩国产| 亚洲精品少妇| 高清不卡一区| 中文字幕乱码亚洲无线精品一区| 精品成人18| 日韩精品一区二区三区中文| 秋霞影视一区二区三区| 久久精品xxxxx| 91久久中文| 在线中文字幕播放| 日韩av午夜在线观看| 久久中文视频| 久久香蕉网站| 日韩欧美中文字幕在线视频| 欧美69视频| 国产精品99久久久久久董美香|