php程序員的優(yōu)化調試技術和技巧_第1頁
已閱讀1頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、PHP程序員的優(yōu)化調試技術和技巧程序員的優(yōu)化調試技術和技巧本文介紹調試PHP應用程序的各種方法,包括在ApachePHP中打開錯誤報告,以及通過在一個簡單的PHP腳本中放置策略性的print語句,找到更困難的bug的源頭。還會介紹用于Eclipse的PHPEclipse插件,這是一個靈活的開發(fā)環(huán)境,具有實時語法解析能力,還會介紹PHPEclipse的DBG調試器擴展。簡介有許多PHP調試技術可以在編碼的時候節(jié)約大量時間。一個有效卻很基本

2、的調試技術就是打開錯誤報告。另一個略微高級一點的技術包括使用print語句,通過顯示在屏幕上實際出現(xiàn)的內(nèi)容,有助于精確地找出更難發(fā)現(xiàn)的bug。PHPEclipse是一個Eclipse插件,能夠強調常見的語法錯誤,可以與調試器結合起來用于設置斷點。設置要學習本文描述的概念,需要PHP、Web服務器和Eclipse。調試器擴展支持的PHP版本是V5.0.3。我們需要一個Web服務器來解析用PHP創(chuàng)建的頁面并把它們顯示到瀏覽器。本文中使用的是

3、Apache2。但是,任何Web服務器都可以滿足要求。要利用本文中介紹的一些調試技術,需要安裝EclipseV3.1.1和插件PHPEclipseV1.1.8。由于Eclipse要求Java技術,所以還要下載它。還需要PHP的調試器擴展模塊。安裝它略有些麻煩。請仔細跟隨安裝調試器擴展的操作說明?,F(xiàn)在,先在php.ini文件中注釋掉那些要求裝入和配置PHP擴展的行。在需要使用調試器的時候,再取消注釋。請參閱參考資料獲得下載信息?,F(xiàn)在介紹出

4、錯消息。出錯消息出錯消息是作為開發(fā)人員的第一道防線。誰都不想在一臺沒有配置成顯示出錯消息的服務器上用PHP開發(fā)代碼。但是,請記住,當代碼調試完成,準備運行的時候,應當確保關閉了錯誤報告,因為不希望站點的訪問者看到出錯消息,因為這會給他們提供足夠的信息來利用站點的弱點并黑掉站點。也可以用出錯消息為自己服務,因為它們會顯示拋出或生成錯誤的正確代碼行。這樣,調試就變成在瀏覽器上查看生成的錯誤所顯示的行號,并在代碼中檢查這一行。稍后,將會看到P

5、HPEclipse插件通過即時地給語法錯誤加下劃線并在保存文件時用紅色“x”標注語法錯誤,可在開發(fā)和調試過程中提供極大的幫助。先來看如何在php.ini文件中開啟錯誤報告并設置錯誤報告的級別。然后將學習如何在Apache的配置文件中覆蓋這些設置。PHP的錯誤報告php.ini文件中有許多配置設置。您應當已經(jīng)設置好自己的php.ini文件并把它放在合適的目錄中,就像在Linux上安裝PHP和Apache2的文檔說明中所示的那樣(請參閱參考

6、資料)。在調試PHP應用程序時,應當知道兩個配置變量。下面是這兩個變量及其默認值:display_errs=Offerr_repting=E_ALL通過在php.ini文件中搜索它們,可以發(fā)現(xiàn)這兩個變量當前的默認值。display_errs變量的目的很明顯——它告訴PHP是否顯示錯誤。默認值是Off。但是,要讓開發(fā)過程介紹print語句因為應用程序中的功能性bug不會產(chǎn)生錯誤,所以在所有調試策略中,關于如何正確地放置和使用print或d

7、ie語句來調試PHP應用程序的知識是一種很好的資產(chǎn)??梢杂胮rint語句在代碼中縮小對問題語句的定位,這些語句在語法上沒有錯誤,也不是bug,但是從代碼的功能上看是bug。這些是最難發(fā)現(xiàn)和調試的bug,因為它們不會拋出錯誤。惟一知道的就是在瀏覽器上顯示的內(nèi)容不是想要的內(nèi)容,或者想要保存在數(shù)據(jù)庫中的內(nèi)容根本沒有保存。假設正在處理通過GET請求發(fā)送過來的表單數(shù)據(jù),想向瀏覽器顯示信息,但是出于某種原因,數(shù)據(jù)沒有正確地提交,或者不能正確地從GE

8、T請求中讀出。要調試這類問題,重要的是用print()或die()語句知道變量的值是什么。die()語句會中止程序執(zhí)行,并在Web瀏覽器上顯示文本。如果不想注釋掉代碼,而且只想顯示到出錯之前的信息和出錯信息,不想顯示后面的信息,那么die()語句特別有用。讓我們在PHP中用print語句來測試這個概念使用print語句進行調試在我作程序員的那些時候,當我在Linux上開發(fā)應用程序時,沒有方便的GUI可以告訴我bug在哪,我迅速地發(fā)現(xiàn)我在

9、程序中放的print語句越多,我在應用程序中把bug的范圍縮小到一行的機會越大。請創(chuàng)建另一個PHP文件test2.php,并像清單2所示的那樣定義它。清單2.顯示通過GET提交的所有變量“)feach($_GETas$key=$i)print(“$key=$j“)if($_GET[Submit]==“SendGETRequest“)$j=“done!“Name:Email:您可能會非常容易地發(fā)現(xiàn)清單2中的bug!您很棒!但請注意這是一個

10、非常簡單的腳本,只是作為使用print語句進行調試而展示的一個例子而已。這個腳本只是提取GET請求中的所有變量,如果有,就把它們顯示在瀏覽器上。還提供了一個表單,用GET請求向服務器發(fā)送變量以進行測試。請看輸出,如圖2所示。圖2.test2.php的輸出現(xiàn)在單擊SendGETRequest按鈕,請注意只有$_GET請求的鍵顯示在瀏覽器上,而正確的值都沒顯示??梢栽谘h(huán)中放一個print語句,檢驗在feach循環(huán)中每個元素中是否確實存在數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論