亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > PHP如何打印跟蹤調試信息

PHP如何打印跟蹤調試信息

熱門標簽:百度商鋪地圖標注 衡水外呼系統平臺 福州人工外呼系統哪家強 釘釘打卡地圖標注 新河科技智能外呼系統怎么樣 注冊400電話申請 常州地圖標注服務商 地圖標注平臺怎么給錢注冊 安裝電銷外呼系統

對于大部分編譯型語言來說,比如 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打印調試信息的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • Ubuntu下開啟php調試模式報錯信息解決辦法
  • 如何運行/調試你的PHP代碼
  • PHPStorm 2020.1 調試 Nodejs的多種方法詳解
  • PhpStorm+xdebug+postman調試技巧分享
  • php開發最強大的IDE編輯的phpstorm 2020.2配置Xdebug調試的詳細教程
  • phpStudy vscode 搭建debug調試的教程詳解
  • 解決windows上php xdebug 無法調試的問題
  • Vagrant(WSL)+PHPStorm+Xdebu 斷點調試環境搭建
  • PhpStorm 如何優雅的調試Hyperf的方法步驟

標簽:鷹潭 白城 唐山 遼陽 六安 克拉瑪依 柳州 鶴崗

巨人網絡通訊聲明:本文標題《PHP如何打印跟蹤調試信息》,本文關鍵詞  PHP,如何,打印,跟蹤,調試,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP如何打印跟蹤調試信息》相關的同類信息!
  • 本頁收集關于PHP如何打印跟蹤調試信息的相關信息資訊供網民參考!
  • 推薦文章
    中文字幕一区二区三区 精品| 国产伦久视频免费观看 视频| 夜夜操网| 九九久久99| 91麻豆精品国产自产在线观看一区 | 久久99中文字幕久久| 久草免费在线视频| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 日本伦理黄色大片在线观看网站| 九九久久国产精品大片| 欧美激情一区二区三区视频| 四虎久久影院| 在线观看导航| 亚洲 激情| 黄视频网站在线看| 日韩一级精品视频在线观看| 国产精品免费久久| 欧美1卡一卡二卡三新区| 国产伦久视频免费观看视频| 国产国语对白一级毛片| 97视频免费在线观看| 日韩中文字幕在线亚洲一区| 久久久久久久久综合影视网| 精品国产一区二区三区久久久蜜臀| 日韩一级黄色大片| 日韩在线观看网站| 精品在线视频播放| 欧美大片a一级毛片视频| 国产欧美精品| 黄色福利片| 国产一区二区精品尤物| 日韩在线观看网站| 久久成人亚洲| 久久99中文字幕久久| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 午夜在线亚洲男人午在线| 国产麻豆精品hdvideoss| 成人a大片高清在线观看| 精品视频在线观看免费| 国产原创视频在线| 国产欧美精品| 可以免费看污视频的网站| 精品视频在线观看免费 | 999精品在线| 国产成人女人在线视频观看| 美女免费精品视频在线观看| 精品国产一区二区三区久久久狼| 美女免费精品高清毛片在线视| 99久久精品国产免费| 深夜做爰性大片中文| 国产亚洲精品aaa大片| 国产麻豆精品免费密入口| 九九精品影院| 日本在线www| 国产麻豆精品免费视频| 尤物视频网站在线观看| 免费国产在线观看| 麻豆系列 在线视频| 精品视频在线观看免费| 免费国产在线视频| 99色视频在线观看| 日韩专区亚洲综合久久| 中文字幕97| 日韩在线观看视频免费| 国产网站免费视频| 国产精品自拍在线| 成人影视在线播放| 国产原创中文字幕| 日韩中文字幕在线播放| 中文字幕一区二区三区精彩视频| 精品国产一区二区三区精东影业| 欧美一级视| 精品视频在线观看一区二区| 成人a大片高清在线观看| 日本在线www| 国产麻豆精品视频| 香蕉视频久久| 999精品影视在线观看| 日韩中文字幕一区二区不卡| 九九国产| 久久精品免视看国产明星| 国产不卡在线看| 欧美一级视频免费观看| 你懂的在线观看视频| 91麻豆精品国产高清在线| 国产麻豆精品高清在线播放| 国产不卡在线看| 国产成人精品一区二区视频| 免费国产一级特黄aa大片在线| 二级特黄绝大片免费视频大片| 国产国语在线播放视频| 国产精品自拍亚洲| 成人免费一级毛片在线播放视频| 九九久久99| 99久久精品国产免费| 午夜在线亚洲| 国产a网| 日日爽天天| 亚洲不卡一区二区三区在线| 久久国产精品自线拍免费| 九九久久国产精品大片| 国产一级生活片| 国产视频久久久久| 国产伦精品一区二区三区无广告| 欧美日本免费| 国产伦理精品| 国产不卡高清| 青青久久精品| 国产网站在线| 国产极品精频在线观看| 韩国毛片| 欧美激情一区二区三区视频高清| 国产成人精品在线| 成人免费观看网欧美片| 精品国产一区二区三区免费| 国产成人欧美一区二区三区的| 精品在线视频播放| 国产一区二区精品久久| 一级女性大黄生活片免费| 欧美国产日韩久久久| 欧美日本免费| 国产视频一区二区在线观看| 尤物视频网站在线| 99久久精品国产国产毛片 | 精品视频在线观看免费 | a级毛片免费观看网站| 99久久精品费精品国产一区二区| 你懂的福利视频| 999精品影视在线观看| 午夜家庭影院| 亚洲爆爽| 日韩女人做爰大片| 免费毛片播放| 高清一级毛片一本到免费观看| 欧美激情伊人| 可以免费看污视频的网站| 在线观看导航| 亚洲第一页乱| 精品在线免费播放| 成人a大片在线观看| 国产不卡高清| 欧美a级片免费看| 欧美日本国产| 久久久成人网| 亚洲精品久久玖玖玖玖| 日本特黄特黄aaaaa大片| 黄色免费三级| 国产成人啪精品视频免费软件| 国产不卡在线看| 精品视频一区二区| 精品视频免费观看| 精品视频一区二区三区免费| 你懂的日韩| 国产精品自拍在线| 国产91精品系列在线观看| 黄视频网站在线看| 国产原创视频在线| 欧美一级视频免费观看| 亚欧视频在线| 国产91精品系列在线观看| 99久久精品费精品国产一区二区| 欧美激情一区二区三区视频 | 免费国产在线观看| 四虎久久精品国产| 一本高清在线| 九九热国产视频| 深夜做爰性大片中文| 中文字幕97| 免费国产在线观看不卡| 国产不卡在线看| 天天色成人| 久久精品店| 久草免费资源| 国产成人女人在线视频观看| 亚洲 欧美 成人日韩| 国产不卡在线看| 亚洲女初尝黑人巨高清在线观看| 久久精品成人一区二区三区| 欧美大片aaaa一级毛片| 四虎影视久久久免费| 日韩在线观看免费完整版视频| 国产网站麻豆精品视频| 日韩免费在线视频| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 四虎久久影院| 欧美1卡一卡二卡三新区| 国产91视频网| 欧美一级视| 亚欧成人乱码一区二区| 日韩一级黄色大片| 日本免费看视频| 国产一区免费在线观看| 日韩中文字幕一区| 精品视频免费观看| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产91丝袜高跟系列| 99久久网站| 成人高清视频免费观看| 麻豆系列 在线视频| 天堂网中文在线|