亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

xdebug調試PHP程序的學習筆記

2024-05-04 21:47:47
字體:
來源:轉載
供稿:網友

xdebug是一款常用來調試php程序的一個性能的工具,下面本文章介紹在lnmp系統安裝配置xdebug與最后簡單調試方法,還有在調試過程碰到一些問題解決辦法.

xdebug 安裝步驟

xdebug是php的一個module,需要編譯安裝,我用lnmp安裝的php,php被默認安裝到/usr/local/php,然后做一個硬鏈接到/usr/bin

先編譯xdebug,代碼如下:

  1. wget http://www.xdebug.org/files/xdebug-2.2.3.tgz 
  2. tar xzf xdebug-2.2.3.tgz 
  3. cd xdebug-2.2.3 
  4. /usr/bin/phpize 
  5. ./configure --with-php-config=/usr/local/php/bin/php-config 

修改php.ini配置,把下面這些加入.

  1. ;no-debug-non-zts-20090626 這個文件夾名稱和php版本是一一對應的 
  2. zend_extension= "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so" 
  3. xdebug.default_enable = On 
  4. xdebug.show_exception_trace = On 
  5. xdebug.show_local_vars = 1 
  6. xdebug.max_nesting_level = 50 
  7. xdebug.var_display_max_depth = 6 
  8. xdebug.dump_once = On 
  9. xdebug.dump_globals = On 
  10. xdebug.dump_undefined = On 
  11. xdebug.dump.REQUEST = * 
  12. xdebug.cli_color = 2 

利用Xdebug使調試信息更加美觀

Xdebug擴展加載后,Xdebug會對原有的某些PHP函數進行覆寫,以便好更好地進行Debug.比如var_dump()函數,知道通常需要在函數前后加上”<pre>…</pre>”才能夠讓輸出的變量信息比較美觀、可讀性好.

但是加載了Xdebug后,不再需要這樣做了,Xdebug不但自動給加上了<pre>標簽,還給變量加上顏色.

PHP實例代碼如下:

  1. <?php 
  2. $arrTest=array
  3.      "test"=>"abc"
  4.      "test2"=>"abc2" 
  5. ); 
  6. var_dump($arrTest); 
  7. ?> 

利用Xdebug測試腳本執行時間,xdebug_time_index()來顯示時間,代碼如下:

  1. echo xdebug_time_index(); 
  2. sleep(3);echo "<br>"
  3. echo xdebug_time_index(); 

測定腳本占用的內存

想知道程序執行到某個特定階段時到底占用了多大內存,為此PHP提供了函數

memory_get_usage().

這個函數只有當PHP編譯時使用了--enable-memory-limit參數時才有效,Xdebug同樣提供了一個函數xdebug_memory_usage()來實現這樣的功能,另外xdebug還提供了一個xdebug_peak_memory_usage()函數來查看內存占用的峰值,代碼如下:

  1. echo "<br>"
  2. echo xdebug_memory_usage(); 
  3. echo "<br>"
  4. echo xdebug_peak_memory_usage(); 

檢測代碼中的不足

有時候代碼沒有明顯的編寫錯誤,沒有顯示任何錯誤信息(如error、warning、notice等),但是這不表明代碼就是正確無誤的.

有時候可能某段代碼執行時間過長,占用內存過多以致于影響整個系統的效率,沒有辦法直接看出來是哪部份代碼出了問題.

這時候希望把代碼的每個階段的運行情況都監控起來,寫到日志文件中去,運行一段時間后再進行分析,找到問題所在.

之前編輯php.ini文件,加入如下代碼:

  1. [Xdebug] 
  2. xdebug.profiler_enable=on 
  3. xdebug.trace_output_dir="I:Projectsxdebug" 
  4. xdebug.profiler_output_dir="I:Projectsxdebug" 

這幾行,目的就在于把執行情況的分析文件寫入到”I:Projectsxdebug”目錄中去(可以替換成任何想設定的目錄).

如果執行某段程序后,再打開相應的目錄,可以發現生成了一堆文件,例如cachegrind.out.1169585776這種格式命名的文件.

這些就是Xdebug生成的分析文件.用編輯器打開可以看到很多程序運行的相關細節信息,不過很顯然這樣看太累了,需要用圖形化的軟件來查看.

在Windows平臺下,可以用WinCacheGrind(下載地址http://sourceforge.net/projects/wincachegrind/)這個軟件來打開這些文件.

可以直觀漂亮地顯示其中內容,代碼如下:

  1. testXdebug(); 
  2. function testXdebug() { 
  3.        requireFile(); 
  4. function requireFile() { 
  5.        require_once('abc.php'); 

很直觀地看到index.php中調用了一個函數testXdebug(),testXdebug()中又調用了requireFile()函數.這樣就可以非常方便地查看整個腳本的程序結構.

重啟php-fpm,隨便寫段錯誤的php代碼,刷新瀏覽器,就能看到錯誤提示,在使用過程碰到一個小插曲.

A:訪問超慢響應.

B:訪問超快響應但是是空白頁.

問題A解決的方法很多,總歸還有解決辦法,問題B我估計是線程問題,也許可以通過調試php.ini的配置搞定,也許不是,很難講清楚,線程的問題可能要跟xdebug的版本扯上關系.

解決方式:

PHP.ini 找到memory_limit參數,增大.

換一個瀏覽器,我之前一直用Google Chrome調試程序,之后就開始變慢下來,直到每個頁面變成6秒才加載完畢,已經忍無可忍,換成了Firefox、IE均沒有這個問題(這個方法很好用,還能立刻見效)

使用 xdebug.profiler_enable_trigger配置,有選擇的運行xdebug功能探查程序.

xdebug.remote_host 的值最好跟你服務器的IP一致,比方說你是通過localhost訪問,則這里寫localhost,你是127.0.0.1訪問,就寫127.0.0.1

看看你的xdebug.profiler_output_dir目錄是否已經達到幾G了?(一套電商程序很可能在持續開發十幾個小時后,xdebug.profiler_output_dir目錄的xdebug文件達到好幾G)

平時不需要的時候,最好關閉xdebug,代碼如下:

  1. xdebug.remote_enable = 0 
  2. xdebug.profiler_enable = 0 
  3. xdebug.remote_autostart = false 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产乱人伦真实精品视频| 亚洲国产精品资源| 中文字幕日韩欧美精品在线观看| 亚洲精品一区久久久久久| 欧美亚洲在线观看| 成人黄色大片在线免费观看| 亚洲黄色av网站| 欧日韩不卡在线视频| 国产精品旅馆在线| 成人精品福利视频| 精品女厕一区二区三区| 不卡在线观看电视剧完整版| 国产免费一区二区三区在线观看| 8x拔播拔播x8国产精品| 日韩一区二区av| 日韩在线视频中文字幕| 久久精品国产亚洲精品| 成人国产精品久久久久久亚洲| 久久成人免费视频| 久久久免费在线观看| 国产小视频91| 欧美国产日韩在线| 波霸ol色综合久久| 久久久久久久久久国产| 欧美激情小视频| 色老头一区二区三区| 中文字幕亚洲综合| 亚洲片国产一区一级在线观看| 亚洲精品福利免费在线观看| 久久久久五月天| 国产成人一区二| 在线视频日韩精品| 中文字幕日韩精品有码视频| 国产精品久久久久99| 久久深夜福利免费观看| 九色精品免费永久在线| 国产suv精品一区二区三区88区| 亚洲视频在线免费观看| 青青草原成人在线视频| 国产精品久久久久久久一区探花| 亚洲国产一区自拍| 欧美久久久精品| 亚洲香蕉成视频在线观看| 亚洲三级av在线| 国产精品你懂得| 国产mv免费观看入口亚洲| 日韩欧美高清视频| 国产福利精品在线| 国产日韩欧美日韩| 日韩电影中文字幕在线观看| 日韩精品亚洲精品| 国产在线观看一区二区三区| 狠狠躁夜夜躁人人爽天天天天97| 久久久精品一区二区三区| 亚洲一区免费网站| 性欧美xxxx交| 另类专区欧美制服同性| 久久999免费视频| 国产精品久久久久久久久久久久| 亚洲精品自拍第一页| 热久久视久久精品18亚洲精品| 色综合色综合网色综合| 国产精品中文久久久久久久| 久久久久久久一区二区| 久久国产精品久久久久久久久久| 美女扒开尿口让男人操亚洲视频网站| 亚洲男女自偷自拍图片另类| 国产成人一区二区三区电影| 欧美日韩亚洲精品一区二区三区| 国产精品久久久亚洲| 日韩在线播放视频| 欧美高清一级大片| 日本精品性网站在线观看| 久久久成人的性感天堂| 韩国日本不卡在线| 性色av一区二区三区| 欧美激情影音先锋| 国产精品老女人视频| 成人欧美一区二区三区在线湿哒哒| 亚洲精品久久久久中文字幕二区| 97国产精品久久| 亚洲欧美日韩一区二区在线| 欧美日韩成人网| 精品国偷自产在线| 中国人与牲禽动交精品| 1769国内精品视频在线播放| 热re99久久精品国产66热| 亚洲视频在线免费看| 久久在线观看视频| 欧美日韩亚洲一区二区三区| 久久国产天堂福利天堂| 国产精品一区二区久久国产| 欧美性生交xxxxxdddd| 国产精品一区二区3区| 欧美日韩中文字幕| 国产美女搞久久| 另类少妇人与禽zozz0性伦| 色综合久久悠悠| 国产亚洲激情在线| 中文字幕国产日韩| 亚洲欧美在线播放| 欧美黄色www| 人人做人人澡人人爽欧美| 狠狠久久五月精品中文字幕| 日本中文字幕久久看| 欧美在线视频免费观看| 久久久成人精品| 亚洲国产97在线精品一区| 日韩av资源在线播放| 色综合亚洲精品激情狠狠| 国产成人拍精品视频午夜网站| 亚洲国产精品99久久| 操日韩av在线电影| 国产午夜精品全部视频在线播放| 成人妇女淫片aaaa视频| 中文字幕一区二区精品| 国产精品自拍偷拍视频| 国产亚洲精品va在线观看| 久久国产天堂福利天堂| 91九色国产在线| 色噜噜狠狠色综合网图区| 亚洲丝袜一区在线| 国产欧美日韩免费看aⅴ视频| 日韩av在线免费观看| 日韩中文在线视频| 午夜精品美女自拍福到在线| 大胆欧美人体视频| 亚洲资源在线看| 国产精品美乳一区二区免费| 精品一区二区三区四区| 国产精品视频内| 国产一区二区三区在线看| 亚洲激情在线观看视频免费| 国产午夜精品一区理论片飘花| 美女福利视频一区| 国产成人福利夜色影视| 久久综合久久八八| 日韩高清av一区二区三区| 日本久久91av| 国产成人福利夜色影视| 亚洲图片欧美午夜| 超在线视频97| 成人中心免费视频| 免费99精品国产自在在线| 91精品国产高清久久久久久| 国产精品日韩专区| 欧美激情一区二区三区成人| 国产精品人人做人人爽| 日韩中文视频免费在线观看| 亚洲精品久久久久国产| 久久免费国产精品1| 亚洲精品一区久久久久久| 欧美精品激情在线| 国模精品系列视频| 欧美午夜精品久久久久久浪潮| 久久亚洲精品国产亚洲老地址| 国产国产精品人在线视| 国产精品中文久久久久久久| 亚洲香蕉成视频在线观看| 欧美福利视频在线观看| yellow中文字幕久久| 久久免费视频这里只有精品| 久久久亚洲福利精品午夜| 国语自产精品视频在线看一大j8|