成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

PHP調(diào)試利器XDebug的安裝與使用

瀏覽:109日期:2022-09-13 17:25:14

很多PHP程序員調(diào)試使用echo、print_r()、var_dump()、printf()等,雖然對于有較豐富開發(fā)經(jīng)驗的程序員來說這些也已經(jīng)足夠了,他們往往可以在程序執(zhí)行的過程中,通過輸出特定變量的值可以判斷程序執(zhí)行是否正確,甚至效率高低也可以看出來(當然可能還需要使用一些時間函數(shù))。那么我們?yōu)槭裁催€需要一個專門的調(diào)試程序來監(jiān)控我們的程序運行呢?

在我們平時的php開發(fā)中,一個大的項目經(jīng)過長時間的積累以后你會發(fā)現(xiàn)性能越來越慢,而性能到底消耗在了什么地方,常常是一個令人頭疼的問題,function a()調(diào)用了多少次,function b()又消耗了多少時間,我們到底怎么查找是哪個蛀蟲拉慢了我們的程序運行速度呢?在這里給大家介紹一款工具xdebug,相信很多人已經(jīng)聽說過了,希望借助這個工具我們可以起到簡單分析php程序性能瓶頸的問題。

XDebug是什么

XDebug是一個開放源代碼的PHP程序調(diào)試器(即一個Debug工具),可以用來跟蹤,調(diào)試和分析PHP程序的運行狀況。

安裝XDebug訪問 www.xdebug.org ,下載php_xdebug.dll,根據(jù)版本號與自己的操作系統(tǒng)、PHP版本下載合適的。將下載的php_xdebug.dll放到PHP的安裝目錄phpext下。編輯php.ini,有些集合環(huán)境已自帶xdebug的配置,如果沒有則自己手動加入下面幾行:1[xdebug]2zend_extension = '/home/ad/php/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so'3xdebug.auto_trace = on4xdebug.auto_profile = on5xdebug.collect_params = on6xdebug.collect_return = on7xdebug.profiler_enable = on8xdebug.trace_output_dir = '/home/ad/xdebug_log'9xdebug.profiler_output_dir = '/home/ad/xdebug_log'

XDebug參數(shù)簡介:

zend_extension 加載xdebug擴展xdebug.auto_trace 自動打開打開函數(shù)調(diào)用監(jiān)測xdebug.auto_profile 自動打開性能監(jiān)測xdebug.trace_output_dir 設定函數(shù)調(diào)用監(jiān)測信息的輸出文件的路徑。xdebug.profiler_output_dir 設定效能監(jiān)測信息輸出文件的路徑。xdebug.collect_params 打開收集“函數(shù)參數(shù)”的功能。將函數(shù)調(diào)用的參數(shù)值列入函數(shù)過程調(diào)用的監(jiān)測信息中。xdebug.collect_return 打開收集“函數(shù)返回值”的功能。將函數(shù)的返回值列入函數(shù)過程調(diào)用的監(jiān)測信息中。重啟Apache。寫一個test.php,內(nèi)容為<?php phpinfo(); ?>,如果輸出的內(nèi)容中有看到xdebug,說明安裝配置成功。或者去/home/ad/xdebug_log下看看是不是日志已經(jīng)出來了。設置選項CategorySettingDescription

日志

xdebug.trace_output_dir

日志追蹤輸出目錄xdebug.trace_output_name日志文件名,xdebug提供了一系列的標識符,生成相應格式的文件名,具體請參考官網(wǎng)xdebug.trace_options記錄添加到文件中方式:1 = 追加(如果存在該文件). 0 (default) = 覆蓋(如果存在該文件)顯示數(shù)據(jù)xdebug.collect_params非零值 = 控制function的參數(shù)顯示選項0 = 不顯示.1 = 參數(shù)類型,值 (例如:array(9)).2 = 同上1,只是在CLI模式下略微有區(qū)別3 = 所有變量內(nèi)容4 = 所有變量內(nèi)容和變量名(例如:array(0 => 9)).xdebug.collect_return1 = 顯示function返回值. Default 0 不顯示xdebug.collect_vars1 = 顯示當前作用域使用了哪些變量,顯示變量名,該選項不會記錄變量的值,如果需要,使用xdebug.collect_paramsxdebug.collect_assignments1 = 添加一行顯示變量賦值(若為1,形如$a = 1;這類Assignment Expression會在trace文件里顯示)格式xdebug.trace_format0 = 人可讀. 從左至右每列分別表示:時間點, 內(nèi)存, 內(nèi)存差 (需要設置xdebug.show_mem_delta=1), 等級, 函數(shù)名,函數(shù)參數(shù) (需要設置,xdebug.collect_params=1,只要是非零), 當前代碼行所在文件名 , 行號.1 = 機器可讀[1]. 需要借助第三方app,例如:xdebug trace file parser 或者 xdebug trace viewer2 = html格式 即table,用browser打開,顯示tablexdebug.show_mem_delta1 = 顯示每次函數(shù)調(diào)用內(nèi)存消耗(內(nèi)存差)行為 xdebug.auto_trace1 = 打開自動追蹤. (追蹤方式有2種,一種是自動追蹤,所有php腳本運行時,都會產(chǎn)生trace文件;另一種是觸發(fā)方式追蹤,如下)xdebug.trace_enable_trigger[2]

1 = 使用 XDEBUG_TRACE GET/POST 觸發(fā)追蹤, 或者通過設置cookie XDEBUG_TRACE. 為了避免每次請求時,都會生成相應trace追蹤文件,你需要把auto_trace設置為0

注:該特性只在2.2+版本才能設置 [xdebug-general] Re: Is trace_enable_trigger defunct?

限制xdebug.var_display_max_depth數(shù)組和對象元素顯示深度:主要用在數(shù)組嵌套,對象屬性嵌套時,顯示幾級的元素內(nèi)容. Default 3.xdebug.var_display_max_data變量值為字符串時顯示多長. Default 512.xdebug.var_display_max_children數(shù)組和對象元素顯示的個數(shù). Default 128一些自定義函數(shù)FunctionDescriptionvoid xdebug_enable()手動打開,相當于xdebug.default_enable=onvoid var_dump()覆寫php提供的var_dump,出錯時,顯示函數(shù)堆棧信息,(前提:php.ini里html_errors為1),使用xdebug.overload_var_dump 設置是否覆寫void xdebug_start_trace( string trace_file_path [, integer options] )手動控制需要追蹤的代碼段trace_file_path :文件路徑(相對或絕對,若為空).如果為空,或者不傳參, 使用xdebug.trace_output_dir設置的目錄options :XDEBUG_TRACE_APPEND: 1 = 追加文件內(nèi)容末尾, 0 = 覆寫該文件XDEBUG_TRACE_COMPUTERIZED:2 =同 xdebug.trace_format=1 .XDEBUG_TRACE_HTML: 4 = 輸出HTML表格,瀏覽器打開為一tablevoid xdebug_stop_trace()停止追蹤,代碼追蹤在該行停止string xdebug_get_tracefile_name()獲得輸出文件名,與 xdebug.auto_trace配合使用.void xdebug_var_dump([mixed var[,...]]) 輸出變量詳細信息,相當于php里的var_dump,具體顯示請看這里xdebug.show_local_vars 默認為0,不顯示;非零時,在php執(zhí)行出錯時,顯示出錯代碼所在作用域所有本地變量(注:這會產(chǎn)生大量信息,因此默認是closed),具體顯示差別如下圖[3]array xdebug_get_declared_vars()顯示當前作用域中已聲明的變量array xdebug_get_code_coverage()顯示某一段代碼內(nèi),代碼執(zhí)行到哪些行[4]

關于xdebug.trace_format=1,如果你使用觸發(fā)方式啟用代碼追蹤:(xdebug.auto_trace = 0;xdebug.trace_enable_trigger = 1),那么,你可以在URL里添加XDEBUG_TRACE,例如:localhost/test.php?XDEBUG_TRACE,或者localhost//test.php?XDEBUG_TRACE=1(任意值)。

是不是覺得很麻煩,那么裝個插件,讓它來幫你。Chrome XDEBUG Helper,使用它,你可以切換3種狀態(tài),disabled ,debugging enabled,profiling enabled(下篇詳細介紹),然后切換到debugging enabled。運行該腳本,(去掉URL里的?XDEBUG_TRACE),就可以代碼跟蹤了。

使用xdebug_start_trace()和xdebug_stop_trace()可以手動追蹤你的代碼執(zhí)行情況。

1xdebug_start_trace();2//your code required to trace3xdebug_stop_trace();

設定 xdebug.auto_trace = 1 將在執(zhí)行所有 PHP 腳本之前先啟用自動跟蹤。另外,您可以通過代碼設定 xdebug.auto_trace = 0,并分別使用 xdebug_start_trace() 和 xdebug_stop_trace() 函數(shù)啟用和禁用跟蹤。但是,如果 xdebug.auto_trace 為 1,則可以在包括配置好的 auto_prepend_file 之前先啟動跟蹤。

選項 xdebug.trace_ouput_dir 和 xdebug.trace_output_name 用于控制保存跟蹤輸出的位置。在這里,所有文件都被保存到 /tmp/traces 中,并且每個跟蹤文件都以 trace 為開頭,后接 PHP 腳本的名稱(%s)以及進程 ID(%p)。所有 Xdebug 跟蹤文件都以 .xt 后綴結(jié)尾。

默認情況下,XDebug 將顯示時間、內(nèi)存使用量、函數(shù)名和函數(shù)調(diào)用深度字段。如果將 xdebug.trace_format 設為 0,則輸出將符合人類閱讀習慣(將參數(shù)設為 1 則為機器可讀格式)。此外,如果指定 xdebug.show_mem_delta = 1,則可以查看內(nèi)存使用量是在增加還是在減少,而如果指定 xdebug.collect_params = 4,則可以查看傳入?yún)?shù)的類型和值。要監(jiān)視每個函數(shù)返回的值,請設定 xdebug.collect_return = 1。

標簽: PHP
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
蜜桃视频在线观看一区二区| 久久成人羞羞网站| 亚洲自拍另类综合| 91色.com| 精品蜜桃在线看| 韩日欧美一区二区三区| 99av国产精品欲麻豆| 久久久精品国产免大香伊| 国产露脸91国语对白| 欧美日本一区二区| 蜜桃视频第一区免费观看| 免费在线成人av| 亚洲成人你懂的| 夜夜嗨一区二区三区| 亚洲视频免费在线| 亚洲国产精品久久久久婷婷老年| 国产精品美女一区二区在线观看| 国内精品久久久久久久影视麻豆| 亚洲国产精品v| 欧美亚洲日本国产| 免费不卡在线视频| 色婷婷av一区二区三区大白胸| 首页国产丝袜综合| 日韩视频一区| 亚洲午夜在线视频| 亚洲影院一区| 日韩综合小视频| 色老汉av一区二区三区| 美女mm1313爽爽久久久蜜臀| 欧美专区18| 蜜桃精品视频在线| 欧美日韩精品一区二区三区| 国产一区二区不卡| 欧美一级黄色录像| 波多野结衣视频一区| 337p日本欧洲亚洲大胆精品| 91在线国产观看| 国产欧美1区2区3区| 99精品视频网| 香蕉久久夜色精品国产使用方法| 久久久久一区| 久久99国产精品久久99果冻传媒| 91精品国产色综合久久| 波波电影院一区二区三区| 国产精品剧情在线亚洲| 国产精品美女久久久| 免费成人小视频| 日韩视频在线一区二区| 欧美成人69av| 亚洲欧美一区二区三区国产精品| 国产精品久久久免费| 婷婷国产v国产偷v亚洲高清| 欧美精选午夜久久久乱码6080| 国产成人午夜高潮毛片| 欧美成人三级在线| 欧美久久九九| 一区二区日韩av| 欧美影院精品一区| 成人免费三级在线| 国产精品久久精品日日| 免费亚洲一区| 国产成人免费视频| 国产视频视频一区| 亚洲一区bb| 国产一区二区三区不卡在线观看| 国产亚洲欧美日韩在线一区| 91久久极品少妇xxxxⅹ软件| 蜜臀av一级做a爰片久久| 欧美成人一区二区三区片免费 | 亚洲国产精品一区制服丝袜| 日日欢夜夜爽一区| 欧美一区二区三区男人的天堂| 欧美凹凸一区二区三区视频| 艳妇臀荡乳欲伦亚洲一区| 欧美日韩三级在线| 你懂的国产精品永久在线| 一区二区免费视频| 欧美猛男超大videosgay| 97国产精品videossex| 一区二区成人在线观看| 欧美日韩国产欧美日美国产精品| 91麻豆福利精品推荐| 亚洲一区二区三区四区在线免费观看 | 欧美日韩一级二级| 欧美一区二区三区免费看| 亚洲成av人在线观看| 91麻豆精品91久久久久同性| 欧美色123| 日本在线不卡视频| 久久久高清一区二区三区| 久久久99爱| av高清不卡在线| 五月婷婷另类国产| 久久婷婷国产综合国色天香 | 欧美成人官网二区| 国产精品久久777777毛茸茸| 国产麻豆精品视频| 亚洲欧美日韩系列| 制服视频三区第一页精品| 9国产精品视频| 高清在线观看日韩| 亚洲永久免费视频| 欧美本精品男人aⅴ天堂| 国产精品日韩欧美一区二区三区| 国产91在线观看| 亚洲一二三四在线| 精品免费日韩av| 久久激情婷婷| 99久久精品99国产精品| 五月开心婷婷久久| 中文字幕免费观看一区| 欧美色区777第一页| 欧美视频导航| 极品美女销魂一区二区三区 | 日韩你懂的电影在线观看| 久久不射网站| 色综合天天做天天爱| 男女视频一区二区| 久久亚洲春色中文字幕久久久| 91福利国产精品| 影院欧美亚洲| 成人18视频在线播放| 秋霞午夜av一区二区三区| 国产精品国产三级国产| 黄色日韩三级电影| 亚洲自拍偷拍麻豆| 国产蜜臀97一区二区三区| 欧美日韩一卡二卡三卡| 国产日韩在线一区二区三区| 成人免费观看男女羞羞视频| 亚洲成a人片综合在线| 欧美极品少妇xxxxⅹ高跟鞋| 91精品欧美久久久久久动漫| 西西裸体人体做爰大胆久久久| 欧美+日本+国产+在线a∨观看| 国产最新精品免费| 一区二区三区四区不卡视频| 国产夜色精品一区二区av| 555夜色666亚洲国产免| 久久精品日韩| 在线亚洲自拍| 欧美日韩成人| 国产成人亚洲精品青草天美| 免费观看在线色综合| 亚洲一区二区三区四区中文字幕| 国产精品亲子乱子伦xxxx裸| 精品乱人伦小说| 欧美精品久久一区二区三区| 在线精品视频小说1| 欧美亚洲专区| 一区二区三区偷拍| 国产精品yjizz| 91丨九色丨国产丨porny| 岛国精品在线观看| 国产综合色视频| 久热成人在线视频| 亚洲成人精品一区二区| 亚洲三级电影全部在线观看高清| 国产欧美日韩麻豆91| 久久这里只有精品6| 精品奇米国产一区二区三区| 日韩天堂在线观看| 欧美成人午夜电影| 日韩精品最新网址| 日韩午夜av电影| 欧美高清精品3d| 51久久夜色精品国产麻豆| 欧美精品自拍偷拍| 欧美日韩二区三区| 在线观看日韩精品| 在线观看www91| 欧美综合欧美视频| 在线视频观看一区| 快she精品国产999| 色一区在线观看| 日本伦理一区二区| 91福利在线免费观看| 欧美亚洲国产一区二区三区va| 欧美亚洲国产bt| 在线欧美日韩精品| 在线精品视频免费观看| 91久久线看在观草草青青| 色一情一伦一子一伦一区| 在线亚洲精品福利网址导航| 欧美在线啊v一区| 欧美喷潮久久久xxxxx| 欧美一区二区性放荡片| 欧美精选午夜久久久乱码6080| 欧美日韩视频专区在线播放| 欧美日韩成人综合在线一区二区| 欧美三级电影网| 欧美精品久久99久久在免费线| 欧美一级精品在线| 欧美成人vr18sexvr| 久久久久国产精品麻豆ai换脸 | 精品国产乱码久久久久久影片| 精品国产伦一区二区三区观看体验 | 亚洲一区二区三区爽爽爽爽爽| 亚洲成人自拍偷拍| 日韩成人dvd|