国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

PHP調(diào)試?yán)鱔Debug的安裝與使用

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

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

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

XDebug是什么

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

安裝XDebug訪問(wèn) www.xdebug.org ,下載php_xdebug.dll,根據(jù)版本號(hào)與自己的操作系統(tǒng)、PHP版本下載合適的。將下載的php_xdebug.dll放到PHP的安裝目錄phpext下。編輯php.ini,有些集合環(huán)境已自帶xdebug的配置,如果沒(méi)有則自己手動(dòng)加入下面幾行: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ù)簡(jiǎn)介:

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

日志

xdebug.trace_output_dir

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

1 = 使用 XDEBUG_TRACE GET/POST 觸發(fā)追蹤, 或者通過(guò)設(shè)置cookie XDEBUG_TRACE. 為了避免每次請(qǐng)求時(shí),都會(huì)生成相應(yīng)trace追蹤文件,你需要把a(bǔ)uto_trace設(shè)置為0

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

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

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

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

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

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

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

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

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

標(biāo)簽: PHP
相關(guān)文章:
主站蜘蛛池模板: 永久免费观看午夜视频在线 | 国产午夜精品理论片在线 | 99视频国产精品 | 亚洲一区二区三区免费 | 在线观看视频一区二区三区 | 亚洲经典三级 | 99久久国产综合精品五月天 | 欧美午夜视频一区二区三区 | 久久一日本道色综合久 | 亚洲欧美日产综合在线看 | 国产成人免费片在线视频观看 | 国内精品小视频福利网址 | 一级黄片一级毛片 | 国产人成亚洲第一网站在线播放 | 日本一级高清片免费 | 毛片搜索 | 香港经典a毛片免费观看爽爽影院 | 日韩精品久久久免费观看夜色 | 成年人毛片 | 久久午夜网 | 欧美高清一区二区 | 免费国产精品视频 | 美女张开双腿让男人桶 | 亚洲视频在线观看 | 国产浮力第一页草草影院 | 国产成人手机视频 | 国产成人91一区二区三区 | 欧美激情特级黄aa毛片 | 国产一区二区久久久 | 成年性午夜免费视频网站不卡 | ccav在线永久免费看 | 欧美a一级 | av在线亚洲男人的天堂 | 欧美日韩a∨毛片一区 | 亚洲视频区| 精品午夜久久网成年网 | 亚洲毛片视频 | 四色永久| 国产精品久久久久久一区二区三区 | 特级av毛片免费观看 | 99国产在线播放 |