青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴(yán)以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

Xdebug是一個開放源代碼的PHP程序調(diào)試器

轉(zhuǎn)載自:http://blog.csdn.net/guoguo1980/article/details/1041725
為什么需要Debugger?
很多PHP程序員調(diào)試使用echo、print_r()、var_dump()、printf()等,其實對于有較豐富開發(fā)經(jīng)驗的程序員來說這些也已經(jīng)足夠了,他們往往可以在程序執(zhí)行的過程中,通過輸出特定變量的值可以判斷程序執(zhí)行是否正確,甚至效率高低也可以看出來(當(dāng)然可能還需要使用一些時間函數(shù))。那么我們?yōu)槭裁催€需要一個專門的調(diào)試程序來監(jiān)控我們的程序運(yùn)行呢? 這個問題的答案不妨留到后面來揭曉。
什么是Xdebug?
Xdebug是一個開放源代碼的PHP程序調(diào)試器(即一個Debug工具),可以用來跟蹤,調(diào)試和分析PHP程序的運(yùn)行狀況。Xdebug現(xiàn)在的最新版本是xdebug 2.0.0beta6,支持PHP4/PHP5
官方站點:www.Xdebug.org
如何安裝Xdebug
以PHP5.1.4,Windows平臺為例(其它PHP版本,其它平臺請參看官網(wǎng)文檔):
1. 登錄www.xdebug.org,在首頁右側(cè)有一個Windows modules,選擇其中的PHP5.1.2+,下載php_xdebug-5.1.2-2.0.0beta6.dll文件;
2. 將下載的php_xdebug-5.1.2-2.0.0beta6.dll放到C:/php5/ext目錄,重命名為php_xdebug.dll
3. 編輯php.ini,加入下面幾行:
extension=php_xdebug.dll
[Xdebug]
xdebug.profiler_enable=on
xdebug.trace_output_dir="I:/Projects/xdebug"
xdebug.profiler_output_dir="I:/Projects/xdebug" 
后面的目錄“I:/Projects/xdebug”為你想要放置Xdebug輸出的數(shù)據(jù)文件的目錄,可自由設(shè)置。
4. 重啟Apache
5. 寫一個test.php,內(nèi)容為<?php phpinfo(); ?>,如果輸出的內(nèi)容中有看到xdebug,說明安裝配置成功。

現(xiàn)在我們就可以開始使用Xdebug強(qiáng)大的功能了!

  

作者:Haohappy     

MSN: haohappy at msn.com

Blog: http://blog.csdn.net/haohappy2004

2006-07-04

Go on..現(xiàn)在我們來從最簡單的程序調(diào)試開始一步步介紹Xdebug。

調(diào)試:

我們先寫一個可以導(dǎo)致執(zhí)行出錯的程序,例如嘗試包含一個不存在的文件。

testXdebug.php

 

<?php

require_once(‘abc.php’);

?>

 

 

然后通過瀏覽器訪問,我們驚奇地發(fā)現(xiàn),出錯信息變成了彩色的了:

 

不過除了樣式改變,和我們平時打印的出錯信息內(nèi)容沒什么不同,意義不大。好,我們繼續(xù)改寫程序:

 

 

testXdebug2.php

 

<?php

testXdebug();

function testXdebug() {

       require_once('abc.php');

}

?>

 

輸出信息:

 

發(fā)現(xiàn)了什么? Xdebug跟蹤代碼的執(zhí)行,找到了出錯的函數(shù)testXdebug()

 

 

我們把代碼再寫得復(fù)雜一些: 

testXdebug3.php

<?php

testXdebug();

function testXdebug() {

       requireFile();    

}

function requireFile() {

       require_once('abc.php');

}

?>

輸出信息:

呵呵,也就是說Xdebug具有類似于JavaException的“跟蹤回溯”的功能,可以根據(jù)程序的執(zhí)行一步步跟蹤到出錯的具體位置,哪怕程序中的調(diào)用很復(fù)雜,我們也可以通過這個功能來理清代碼關(guān)系,迅速定位,快速排錯。

作者:Haohappy     

MSN: haohappy at msn.com

Blog: http://blog.csdn.net/haohappy2004

2006-07-04

其實PHP函數(shù)debug_backtrace()也有類似的功能,但是要注意debug_backtrace()函數(shù)只在PHP4.3.0之后版本及
PHP5中才生效。這個函數(shù)是PHP開發(fā)團(tuán)隊在PHP5中新增的函數(shù),然后又反向移植到PHP4.3中。
如何利用Xdebug使調(diào)試信息更加美觀?
Xdebug擴(kuò)展加載后,Xdebug會對原有的某些PHP函數(shù)進(jìn)行覆寫,以便好更好地進(jìn)行Debug。比如var_dump()函數(shù),我們知道通常我們需要在函數(shù)前后加上”<pre>…</pre>”才能夠讓輸出的變量信息比較美觀、可讀性好。但是加載了Xdebug后,我們不再需要這樣做了,Xdebug不但自動給我們加上了<pre>標(biāo)簽,還給變量加上顏色。
例:
<?php
$arrTest=array(
       "test"=>"abc",
       "test2"=>"abc2"
);
var_dump($arrTest);
?>
輸出:
看到了嗎? 數(shù)組元素的值自動顯示顏色。
如何利用Xdebug測試腳本執(zhí)行時間
測試某段腳本的執(zhí)行時間,通常我們都需要用到microtime()函數(shù)來確定當(dāng)前時間。例如PHP手冊上的例子:
<?php
/**
* Simple function to replicate PHP 5 behaviour
*/
function microtime_float()
{
    list(
$usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}

$time_start = microtime_float();
// Sleep for a while
usleep(100);
$time_end = microtime_float();
$time = $time_end - $time_start;
echo 
"Did nothing in $time seconds/n";
?>
但是microtime()返回的值是微秒數(shù)及絕對時間戳(例如“0.03520000 1153122275),沒有可讀性。所以如上程序,我們需要另外寫一個函數(shù)microtime_float(),來將兩者相加。
Xdebug自帶了一個函數(shù)xdebug_time_index()來顯示時間。
如何測定腳本占用的內(nèi)存?
有時候我們想知道程序執(zhí)行到某個特定階段時到底占用了多大內(nèi)存,為此PHP提供了函數(shù)memory_get_usage()。這個函數(shù)只有當(dāng)PHP編譯時使用了--enable-memory-limit參數(shù)時才有效。 
Xdebug同樣提供了一個函數(shù)xdebug_memory_usage()來實現(xiàn)這樣的功能,另外xdebug還提供了一個xdebug_peak_memory_usage()函數(shù)來查看內(nèi)存占用的峰值。
如何檢測代碼中的不足?
有時候代碼沒有明顯的編寫錯誤,沒有顯示任何錯誤信息(如errorwarningnotice等),但是這不表明代碼就是正確無誤的。有時候可能某段代碼執(zhí)行時間過長,占用內(nèi)存過多以致于影響整個系統(tǒng)的效率,我們沒有辦法直接看出來是哪部份代碼出了問題。這時候我們希望把代碼的每個階段的運(yùn)行情況都監(jiān)控起來,寫到日志文件中去,運(yùn)行一段時間后再進(jìn)行分析,找到問題所在。
回憶一下,之前我們編輯php.ini文件
加入
[Xdebug]
xdebug.profiler_enable=on
xdebug.trace_output_dir="I:/Projects/xdebug"
xdebug.profiler_output_dir="I:/Projects/xdebug" 
這幾行,目的就在于把執(zhí)行情況的分析文件寫入到I:/Projects/xdebug”目錄中去(你可以替換成任何你想設(shè)定的目錄)。如果你執(zhí)行某段程序后,再打開相應(yīng)的目錄,可以發(fā)現(xiàn)生成了一堆文件,例如cachegrind.out.1169585776這種格式命名的文件。這些就是Xdebug生成的分析文件。用編輯器打開你可以看到很多程序運(yùn)行的相關(guān)細(xì)節(jié)信息,不過很顯然這樣看太累了,我們需要用圖形化的軟件來查看。
Windows平臺下,可以用WinCacheGrind(*我修改的*下載地址http://sourceforge.net/projects/wincachegrind/)這個軟件來打開這些文件。可以直觀漂亮地顯示其中內(nèi)容:
哇,非常漂亮,我們很直觀地看到index.php中我們調(diào)用了一個函數(shù)testXdebug()testXdebug()中又調(diào)用了requireFile()函數(shù)。這樣我們就可以非常方便地查看整個腳本的程序結(jié)構(gòu)。
另外,我們還可以看到每個函數(shù)被調(diào)用的次數(shù)及執(zhí)行所花費(fèi)的時間!這對于測試程序性能非常有用。
好了,這么一個簡單的程序不太能顯示出Xdebug+WinCacheGrind的強(qiáng)大,我給出一個稍大點的例子(一個基于Zend FrameworkCMSindex.php):
從上圖可以看到:整個程序的結(jié)構(gòu),每個函數(shù)被調(diào)用的次數(shù),執(zhí)行時間都一目了然。
小結(jié):
Xdebug提供了各種自帶的函數(shù),并對已有的某些PHP函數(shù)進(jìn)行覆寫,可以方便地用于調(diào)試排錯;Xdebug還可以跟蹤程序的運(yùn)行,通過對日志文件的分析,我們可以迅速找到程序運(yùn)行的瓶頸所在,提高程序效率,從而提高整個系統(tǒng)的性能。



posted on 2014-06-15 09:59 楊粼波 閱讀(417) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美激情 亚洲a∨综合| 欧美日韩综合视频网址| 久久综合狠狠| 亚洲福利视频三区| 欧美风情在线| 欧美精品一区二区蜜臀亚洲| 亚洲第一主播视频| 免费人成精品欧美精品| 久久久久亚洲综合| 亚洲精品美女在线观看播放| 欧美第一黄网免费网站| 美乳少妇欧美精品| 亚洲视频一区在线| 欧美一区二区三区日韩视频| 在线观看亚洲| 在线视频欧美一区| 国产女主播一区二区三区| 蜜桃av一区二区三区| 欧美日韩mp4| 免费亚洲视频| 国产精品久久看| 亚洲国产精品高清久久久| 欧美午夜宅男影院| 久久成人18免费观看| 欧美精品日韩www.p站| 久久久久国产精品人| 欧美激情一区二区三区| 久久综合久久88| 国产精品亚洲一区| 亚洲美女色禁图| 亚洲人体影院| 免费在线日韩av| 免费观看国产成人| 国产精品一区在线播放| 欧美日韩国产在线看| 欧美一区二区三区四区夜夜大片 | 亚洲综合精品自拍| 好看不卡的中文字幕| 亚洲嫩草精品久久| 亚洲欧美偷拍卡通变态| 欧美日韩精品三区| 亚洲婷婷免费| 久久国产高清| 尤物yw午夜国产精品视频| 欧美一区二区三区日韩| 久热爱精品视频线路一| 狠狠色综合网站久久久久久久| 欧美一区二区三区视频在线 | 亚洲最新中文字幕| 亚洲天堂av在线免费观看| 欧美区在线观看| 亚洲专区一区| 米奇777超碰欧美日韩亚洲| 一区视频在线看| 欧美性天天影院| 久久爱www.| 日韩一区二区免费看| 欧美一区二区三区在线观看| 亚洲大胆在线| 国产欧美精品一区二区色综合 | 欧美成人有码| 在线亚洲激情| 亚洲片区在线| 香蕉成人久久| 亚洲激情小视频| 久久国产一区二区| 一本色道久久综合狠狠躁的推荐| 欧美视频中文在线看| 另类天堂av| 久久精品亚洲热| 欧美在线观看日本一区| 中日韩高清电影网| 91久久精品国产91久久性色tv| 久久精品伊人| 久久精品国产亚洲5555| 午夜精品久久99蜜桃的功能介绍| 亚洲精品国产拍免费91在线| 影音先锋久久| 亚洲电影成人| 日韩视频在线永久播放| 一区二区激情视频| 中文一区二区在线观看| 影音先锋中文字幕一区| 亚洲国产精品成人综合| 亚洲国产精品国自产拍av秋霞 | 欧美激情一区二区三区在线视频观看 | 国产日韩成人精品| 欧美性猛交xxxx乱大交蜜桃 | 欧美区在线播放| 国产精品a级| 国产欧美一区二区三区在线看蜜臀| 欧美揉bbbbb揉bbbbb| 国产精品久久影院| 国产精品综合网站| 国产精品资源| 欧美一区二区三区视频在线 | 欧美成人xxx| 亚洲精品一区二区三区福利| 亚洲精品久久久久| 99成人精品| 久久在线免费视频| 老鸭窝91久久精品色噜噜导演| 欧美激情影院| 久久精品国产第一区二区三区| 欧美国产精品| 亚洲国产欧美国产综合一区| 先锋影音久久| 99在线热播精品免费| 欧美国产在线观看| 在线看片日韩| 另类专区欧美制服同性| 亚洲欧美日本另类| 欧美视频在线一区| 一本到12不卡视频在线dvd| 欧美福利网址| 免费亚洲一区二区| 最新精品在线| 亚洲精品国产精品久久清纯直播| 老司机精品久久| 最新日韩av| 亚洲美女区一区| 国产精品久久亚洲7777| 午夜激情综合网| 久久精品视频在线免费观看| 一色屋精品亚洲香蕉网站| 久久在线精品| 欧美精品久久久久久久| 一本大道久久精品懂色aⅴ| 在线一区二区三区四区| 国产精品亚洲美女av网站| 欧美一级理论性理论a| 久久国产精品一区二区| 91久久视频| 亚洲在线视频网站| 亚洲视频每日更新| 国产精品推荐精品| 免费欧美电影| 欧美视频中文在线看| 久久久99精品免费观看不卡| 久久久久欧美精品| 亚洲小少妇裸体bbw| 久久香蕉精品| 久久爱www久久做| 欧美日韩另类在线| 久久一区中文字幕| 国产精品免费一区二区三区在线观看| 美女视频网站黄色亚洲| 国产精品盗摄久久久| 欧美顶级艳妇交换群宴| 国产麻豆日韩欧美久久| 亚洲经典在线| 亚洲观看高清完整版在线观看| 亚洲影音先锋| 亚洲一区二区毛片| 欧美激情精品久久久久久久变态| 欧美中文字幕不卡| 国产精品成人久久久久| 亚洲欧洲综合另类在线| 亚洲激情女人| 免费观看久久久4p| 亚洲高清123| 亚洲第一视频| 久久综合九色综合网站| 欧美国产日韩a欧美在线观看| 国产综合婷婷| 久久激情视频免费观看| 久久精品国产免费观看| 韩日欧美一区二区三区| 久久精品国产99精品国产亚洲性色 | 9i看片成人免费高清| 欧美精品一区二区三区蜜臀 | 久久久www| 亚洲国产精品电影| 中日韩美女免费视频网址在线观看| 欧美激情精品久久久久久| 一本色道久久综合亚洲精品小说| 欧美色另类天堂2015| 一本久道综合久久精品| 久久国产精品色婷婷| 亚洲国产你懂的| 欧美性猛交99久久久久99按摩| 欧美一区二区三区日韩视频| 欧美成人乱码一区二区三区| 亚洲一区二区不卡免费| 韩国av一区二区三区在线观看| 欧美大片第1页| 久久狠狠一本精品综合网| 99视频精品全部免费在线| 嫩草影视亚洲| 久久久在线视频| 欧美一级片一区| 亚洲欧美怡红院| a4yy欧美一区二区三区| 91久久黄色| 亚洲国产一区二区视频| 在线观看中文字幕亚洲| 国产伦理一区| 国产欧美精品xxxx另类| 国产精品xnxxcom| 国产精品久久久久久久久久直播 |