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

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

PHP調試利器XDebug的安裝與使用

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

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

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

XDebug是什么

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

安裝XDebug訪問 www.xdebug.org ,下載php_xdebug.dll,根據版本號與自己的操作系統、PHP版本下載合適的。將下載的php_xdebug.dll放到PHP的安裝目錄phpext下。編輯php.ini,有些集合環境已自帶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參數簡介:

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

日志

xdebug.trace_output_dir

日志追蹤輸出目錄xdebug.trace_output_name日志文件名,xdebug提供了一系列的標識符,生成相應格式的文件名,具體請參考官網xdebug.trace_options記錄添加到文件中方式:1 = 追加(如果存在該文件). 0 (default) = 覆蓋(如果存在該文件)顯示數據xdebug.collect_params非零值 = 控制function的參數顯示選項0 = 不顯示.1 = 參數類型,值 (例如:array(9)).2 = 同上1,只是在CLI模式下略微有區別3 = 所有變量內容4 = 所有變量內容和變量名(例如: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 = 人可讀. 從左至右每列分別表示:時間點, 內存, 內存差 (需要設置xdebug.show_mem_delta=1), 等級, 函數名,函數參數 (需要設置,xdebug.collect_params=1,只要是非零), 當前代碼行所在文件名 , 行號.1 = 機器可讀[1]. 需要借助第三方app,例如:xdebug trace file parser 或者 xdebug trace viewer2 = html格式 即table,用browser打開,顯示tablexdebug.show_mem_delta1 = 顯示每次函數調用內存消耗(內存差)行為 xdebug.auto_trace1 = 打開自動追蹤. (追蹤方式有2種,一種是自動追蹤,所有php腳本運行時,都會產生trace文件;另一種是觸發方式追蹤,如下)xdebug.trace_enable_trigger[2]

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

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

限制xdebug.var_display_max_depth數組和對象元素顯示深度:主要用在數組嵌套,對象屬性嵌套時,顯示幾級的元素內容. Default 3.xdebug.var_display_max_data變量值為字符串時顯示多長. Default 512.xdebug.var_display_max_children數組和對象元素顯示的個數. Default 128一些自定義函數FunctionDescriptionvoid xdebug_enable()手動打開,相當于xdebug.default_enable=onvoid var_dump()覆寫php提供的var_dump,出錯時,顯示函數堆棧信息,(前提: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 = 追加文件內容末尾, 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執行出錯時,顯示出錯代碼所在作用域所有本地變量(注:這會產生大量信息,因此默認是closed),具體顯示差別如下圖[3]array xdebug_get_declared_vars()顯示當前作用域中已聲明的變量array xdebug_get_code_coverage()顯示某一段代碼內,代碼執行到哪些行[4]

關于xdebug.trace_format=1,如果你使用觸發方式啟用代碼追蹤:(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種狀態,disabled ,debugging enabled,profiling enabled(下篇詳細介紹),然后切換到debugging enabled。運行該腳本,(去掉URL里的?XDEBUG_TRACE),就可以代碼跟蹤了。

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

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

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

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

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

標簽: PHP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
97精品国产| 亚洲18在线| 久久av影院| 国产精品hd| 久久精品国产在热久久| 久久三级中文| 国产精品麻豆久久| 久久婷婷丁香| 亚洲激情婷婷| 天堂av一区| 国产精品第一| 中文字幕色婷婷在线视频| 久久精品高清| 蜜桃精品在线| 亚洲作爱视频| 色8久久久久| 国产精品美女在线观看直播| 国产精品porn| 日韩免费久久| 五月精品视频| 日韩欧美另类中文字幕| 欧美a在线观看| 免费福利视频一区二区三区| 久久一区二区三区喷水| 久久亚洲不卡| 国产日本精品| 日韩电影免费网站| 制服诱惑一区二区| 日韩精选在线| 精品久久影院| 欧美精品一区二区久久| 亚洲精选91| 欧美国产日本| 99成人超碰| 欧美视频精品全部免费观看| 精品国产aⅴ| 午夜在线一区| 久久香蕉网站| 亚洲大全视频| 欧美日一区二区在线观看| 国产成人久久精品一区二区三区| 国产一区二区三区自拍| 欧美亚洲免费| 国产精品99一区二区| 日韩一区精品字幕| 久久gogo国模啪啪裸体| 今天的高清视频免费播放成人| 日韩精彩视频在线观看| 国产黄大片在线观看| 99re国产精品| 国产精品成人一区二区网站软件| 99久久亚洲精品| 日韩精品久久理论片| 97人人精品| 午夜久久av| 久久精品1区| 国产精品日本一区二区三区在线| 99精品在线观看| 国产三级精品三级在线观看国产| 神马久久午夜| 国产日韩欧美| 国产精品日本| 中国字幕a在线看韩国电影| 亚洲人成毛片在线播放女女| 91亚洲国产| 日韩精品免费观看视频| 久久亚洲精品中文字幕蜜潮电影| 欧美日韩午夜| 国产亚洲一区在线| 国产一区二区三区天码| 中文字幕免费一区二区| 欧美成人精品三级网站| 日韩免费精品| 日韩一区二区免费看| 国产欧美一级| 国产精品毛片一区二区三区| 激情综合五月| 日韩欧美中文字幕一区二区三区| 亚洲福利久久| 精品亚洲成人| 日韩精品导航| 老司机精品久久| 亚洲婷婷在线| 欧美国产偷国产精品三区| 88久久精品| 国产农村妇女精品一二区| bbw在线视频| 国产精品久久久久久久久久齐齐| 丝袜诱惑制服诱惑色一区在线观看| 国产一区二区三区天码| 国产探花在线精品| 亚洲精品系列| 亚洲国产一区二区在线观看| 亚洲深夜视频| 国语对白精品一区二区| 国产亚洲精aa在线看| 亚洲精品欧美| 蜜桃免费网站一区二区三区| 欧美午夜不卡| 成人羞羞视频播放网站| 精品久久久网| 欧美激情一区| 国产精品网址| 欧美色综合网| 免费一区二区视频| 亚洲欧美网站| 91久久亚洲| 激情偷拍久久| 国内亚洲精品| 99精品在线观看| 久久精品国产www456c0m| 成人片免费看| 中文字幕成在线观看| 福利欧美精品在线| 成人在线视频中文字幕| 动漫av一区| 六月婷婷综合| 久久婷婷一区| 亚洲一本视频| 美女少妇全过程你懂的久久| 久久精品不卡| 99亚洲视频| 亚洲免费中文| 免费在线观看成人| 亚洲理论在线| 日本va欧美va精品| 国产欧美日本| 久久尤物视频| 国产一区二区精品福利地址| 精品国产午夜| 桃色av一区二区| 亚洲二区在线| 国产视频一区欧美| 亚洲综合婷婷| 亚欧成人精品| 国产无遮挡裸体免费久久| 国产精品国码视频| sm久久捆绑调教精品一区| 亚洲a一区二区三区| 尤物在线精品| 亚洲区欧美区| 国产精品香蕉| 9999国产精品| 国产99久久久国产精品成人免费| 91精品电影| 亚洲我射av| 国产日韩一区二区三区在线播放| 麻豆国产精品视频| 日韩综合精品| 成人av动漫在线观看| 亚洲国产影院| 视频在线观看国产精品| 日韩在线视频一区二区三区| 国产欧美日本| av综合电影网站| 日韩亚洲国产欧美| 日本中文字幕一区二区视频| 欧美激情aⅴ一区二区三区 | 久久激情av| 久久久久久久欧美精品| 亚洲精品**中文毛片| 黄色亚洲免费| 日韩国产精品久久久| 精品一区二区男人吃奶| 日韩免费一区| 蜜臀av国产精品久久久久| 欧美黑人巨大videos精品| 日韩精品首页| 日韩在线黄色| 日韩伦理在线一区| 日韩中文字幕亚洲一区二区va在线 | 蜜臀va亚洲va欧美va天堂 | 一区二区三区四区日韩| 美女高潮久久久| 欧美亚洲激情| 午夜a一级毛片亚洲欧洲| 欧美国产小视频| 石原莉奈在线亚洲三区| 精品高清久久| 蜜臀av亚洲一区中文字幕| 久久精品一区二区国产| 最新亚洲一区| 国产精品网站在线看| 亚洲午夜视频| 91精品国产自产在线丝袜啪| 日韩伦理一区| 日韩国产欧美视频| 久久久久久久久99精品大| 日本欧美在线| 亚洲国产专区| 久久久久观看| 亚洲免费毛片| 欧美日韩一二三四| 麻豆一区二区三| 三级欧美韩日大片在线看| 福利一区在线| 欧美日韩精品一区二区三区视频| 久久精品1区| 久久99蜜桃| 中文不卡在线|