电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

瀏覽:65日期: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
相關文章:
主站蜘蛛池模板: 道达尔润滑油-食品级润滑油-道达尔导热油-合成导热油,深圳道达尔代理商合-深圳浩方正大官网 | SF6环境监测系统-接地环流在线监测装置-瑟恩实业 | 飞象网 - 通信人每天必上的网站| 密封圈_泛塞封_格莱圈-[东莞市国昊密封圈科技有限公司]专注密封圈定制生产厂家 | 全国国际学校排名_国际学校招生入学及学费-学校大全网 | 金属回收_废铜废铁回收_边角料回收_废不锈钢回收_废旧电缆线回收-广东益夫金属回收公司 | 工控机,嵌入式主板,工业主板,arm主板,图像采集卡,poe网卡,朗锐智科 | 交联度测试仪-湿漏电流测试仪-双85恒温恒湿试验箱-常州市科迈实验仪器有限公司 | 东亚液氮罐-液氮生物容器-乐山市东亚机电工贸有限公司 | 不锈钢发酵罐_水果酒发酵罐_谷物发酵罐_山东誉诚不锈钢制品有限公司 | 知名电动蝶阀,电动球阀,气动蝶阀,气动球阀生产厂家|价格透明-【固菲阀门官网】 | 渣土车电机,太阳能跟踪器电机,蜗轮蜗杆减速电机厂家-淄博传强电机 | 钢格栅板_钢格板网_格栅板-做专业的热镀锌钢格栅板厂家-安平县迎瑞丝网制造有限公司 | 除湿机|工业除湿机|抽湿器|大型地下室车间仓库吊顶防爆除湿机|抽湿烘干房|新风除湿机|调温/降温除湿机|恒温恒湿机|加湿机-杭州川田电器有限公司 | 百方网-百方电气网,电工电气行业专业的B2B电子商务平台 | 半自动预灌装机,卡式瓶灌装机,注射器灌装机,给药器灌装机,大输液灌装机,西林瓶灌装机-长沙一星制药机械有限公司 | 户外-组合-幼儿园-不锈钢-儿童-滑滑梯-床-玩具-淘气堡-厂家-价格 | 红立方品牌应急包/急救包加盟,小成本好项目代理_应急/消防/户外用品加盟_应急好项目加盟_新奇特项目招商 - 中红方宁(北京) 供应链有限公司 | 全自动真空上料机_粉末真空上料机_气动真空上料机-南京奥威环保科技设备有限公司 | 电解抛光加工_不锈钢电解抛光_常州安谱金属制品有限公司 | 智能监控-安防监控-监控系统安装-弱电工程公司_成都万全电子 | 铝板冲孔网,不锈钢冲孔网,圆孔冲孔网板,鳄鱼嘴-鱼眼防滑板,盾构走道板-江拓数控冲孔网厂-河北江拓丝网有限公司 | 安平县鑫川金属丝网制品有限公司,声屏障,高速声屏障,百叶孔声屏障,大弧形声屏障,凹凸穿孔声屏障,铁路声屏障,顶部弧形声屏障,玻璃钢吸音板 | 台式低速离心机-脱泡离心机-菌种摇床-常州市万丰仪器制造有限公司 | 论文查重_免费论文查重_知网学术不端论文查重检测系统入口_论文查重软件 | 德国进口电锅炉_商用电热水器_壁挂炉_电采暖器_电热锅炉[德国宝] | IIS7站长之家-站长工具-爱网站请使用IIS7站长综合查询工具,中国站长【WWW.IIS7.COM】 | 煤矿支护网片_矿用勾花菱形网_缝管式_管缝式锚杆-邯郸市永年区志涛工矿配件有限公司 | 物流之家新闻网-最新物流新闻|物流资讯|物流政策|物流网-匡匡奈斯物流科技 | b2b网站大全,b2b网站排名,找b2b网站就上地球网 | 单电机制砂机,BHS制砂机,制沙机设备,制砂机价格-正升制砂机厂家 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 | 铝箔-铝板-花纹铝板-铝型材-铝棒管-上海百亚金属材料有限公司 | 美国PARKER齿轮泵,美国PARKER柱塞泵,美国PARKER叶片泵,美国PARKER电磁阀,美国PARKER比例阀-上海维特锐实业发展有限公司二部 | 发光字|标识设计|标牌制作|精神堡垒 - 江苏苏通广告有限公司 | 健康管理师报名入口,2025年健康管理师考试时间信息网-网站首页 塑料造粒机「厂家直销」-莱州鑫瑞迪机械有限公司 | 杭州中策电线|中策电缆|中策电线|杭州中策电缆|杭州中策电缆永通集团有限公司 | 武汉刮刮奖_刮刮卡印刷厂_为企业提供门票印刷_武汉合格证印刷_现金劵代金券印刷制作 - 武汉泽雅印刷有限公司 | 股指期货-期货开户-交易手续费佣金加1分-保证金低-期货公司排名靠前-万利信息开户 | 【北京写字楼出租_写字楼租赁_办公室出租网/出售】-远行地产官网 | 沥青车辙成型机-车托式混凝土取芯机-混凝土塑料试模|鑫高仪器 | 展厅装修公司|企业展厅设计|展厅制作|展厅搭建—广州展厅装饰公司 |