已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序開始之前 本教程將介紹 Eclipse 的 EPIC 插件提供的調(diào)試功能,該插件提供了功能豐富的調(diào)試環(huán)境 可為 EPIC Perl 開發(fā)環(huán)境所用且與此開發(fā)環(huán)境相集成。本教程假設(shè)讀者了解 Eclipse 環(huán)境,并且有使用 Perl 的經(jīng)驗(yàn)。關(guān)于本教程EPIC 結(jié)合了兩種有助于 Perl 應(yīng)用程序測試流程的系統(tǒng):RegExp 和調(diào)試器。RegExp 是一個(gè)測試 Perl 正則表達(dá)式的接口。正則表達(dá)式是許多 Perl 應(yīng)用程序的主要組成部分,但保證表達(dá)式的正確性是一個(gè)非常復(fù)雜的問題。使用 EPIC RegExp 視圖,您可以根據(jù)已知數(shù)據(jù)檢查結(jié)果,測試并修改正則表達(dá)式。EPIC Perl 調(diào)試器是一種較為傳統(tǒng)的工具,完全集成于 Eclipse 環(huán)境之中。除測試本地化腳本外,EPIC 調(diào)試器還可用于調(diào)試 Web 及遠(yuǎn)程執(zhí)行 Perl 腳本,因此是多種環(huán)境下的理想工具。本教程將介紹如何導(dǎo)入和移動(dòng)大型應(yīng)用程序、如何簡化應(yīng)用程序視圖以使代碼更易于理解,從而也更易于調(diào)試。另外還會(huì)介紹 EPIC 調(diào)試環(huán)境,它完全位于 Eclipse 內(nèi)部,為標(biāo)準(zhǔn)腳本、CGI 腳本和正則表達(dá)式提供了一個(gè)完整的調(diào)試環(huán)境。前提條件要開始使用 EPIC,需要滿足以下前提條件:Eclipse V3.1 或 3.0Java 技術(shù) V1.3、1.4 或更高版本Perl V5.8.6 或更高版本。絕大多數(shù) UNIX、Linux 安裝及 Mac OS X 中都包含 Perl。Windows 上使用 ActivePerl。Eclipse 的 EPIC 插件PadWalker Perl 模塊。ActiveState 版本 也可。傳統(tǒng) Perl 調(diào)試技術(shù)在介紹 EPIC 之前,讓我們首先來看看 Perl 所使用的傳統(tǒng)調(diào)試技術(shù),這些技術(shù)隨時(shí)可用,并且確實(shí)有一些優(yōu)點(diǎn)。但它們也有著自身的局限性。理解其局限性有助于您理解為何需要一種更好的調(diào)試環(huán)境。Perl 中的調(diào)試簡介如果您問一位典型的 Perl 程序員怎樣調(diào)試其應(yīng)用程序,他多半會(huì)告訴您他只是使用簡單的輸出語句,在程序執(zhí)行時(shí)轉(zhuǎn)儲(chǔ)信息。例如,您可向循環(huán)中添加一條簡單的語句,來輸出您正在計(jì)算或處理的值,如清單 1 所示。清單 1. 使用輸出語句進(jìn)行調(diào)試my$sth=$dbh-prepare($query);$sth-execute();while(my$row=$sth-fetchrow_hashref()printSTDERRDumper($row);printf(%s,%s(%s),$row-album,$row-artist,$row-genre);$sth-finish();在這種情況下,您已輸出了從數(shù)據(jù)庫 (MySQL) 載入到 STDERR 的行轉(zhuǎn)儲(chǔ)。STDERR 使用起來非常方便,這是因?yàn)樵?UNIX 主機(jī)上,您可將 STDERR 的輸出重定位到日志文件,同時(shí)使其他輸出照常定位到標(biāo)準(zhǔn)輸出。示例中的 Dumper() 函數(shù)會(huì)實(shí)際輸出任何變量的結(jié)構(gòu),包括嵌入式和嵌套的數(shù)組、散列及其他內(nèi)容。輸出格式與您手動(dòng)生成的結(jié)構(gòu)形式相同。此函數(shù)(Data:Dumper 模塊的一部分)非常有用,既可作為以適于人類閱讀的格式輸出變量的方法,也可用于寫入一個(gè)能讀回的結(jié)構(gòu),使用 eval() 可重新創(chuàng)建一個(gè)新變量。事后調(diào)試在應(yīng)用程序運(yùn)行時(shí),利用輸出信息的輸出函數(shù)這種方式正是事后調(diào)試的一個(gè)例子。此時(shí)您并未實(shí)際監(jiān)控應(yīng)用程序的執(zhí)行,也沒有嘗試找出應(yīng)用程序運(yùn)行過程中的問題,而是將信息轉(zhuǎn)儲(chǔ)出來,并等待執(zhí)行完成。在交互式調(diào)試難以實(shí)現(xiàn)的情況下,這一特殊的調(diào)試方法廣受人們的歡迎。例如,實(shí)時(shí)調(diào)試 CGI 應(yīng)用程序基本上是不可能實(shí)現(xiàn)的,因?yàn)閼?yīng)用程序在遠(yuǎn)程服務(wù)器上執(zhí)行,且由第二應(yīng)用程序(Web 服務(wù)器)執(zhí)行。不可能實(shí)時(shí)監(jiān)控腳本執(zhí)行。因此,事后調(diào)試有其用武之地,但也有一些顯而易見的局限性。舉例來說,在不更改代碼的情況下,您無法監(jiān)控任何變量,而一旦更改了代碼,您就必須再次運(yùn)行程序,以獲得期望的輸出。同樣,您無法逐行單步調(diào)試程序的執(zhí)行。必須運(yùn)行整個(gè)應(yīng)用程序,除非您強(qiáng)行停止它。如果要跟蹤函數(shù)調(diào)用和序列,就需要添加輸出語句,以顯示作出的是怎樣的決策,并顯示順序與序列,除此之外,別無他法可監(jiān)控或獲得信息。實(shí)時(shí)調(diào)試有多種實(shí)時(shí)調(diào)試系統(tǒng)(Perl 自帶的調(diào)試器就是其中之一),您可從使用 -d 命令行選項(xiàng)入手(參見清單 2)。該命令行選項(xiàng)會(huì)啟動(dòng)一個(gè)交互式會(huì)話,通過此會(huì)話即可逐行單步調(diào)試、跳過代碼段、監(jiān)控變量和值,甚至在執(zhí)行過程中修改值。清單 2. 使用 Perl 調(diào)試器$perl-d-e0LoadingDBroutinesfromperl5db.plversion1.28Editorsupportavailable.Enterhorhhforhelp,ormanperldebugformorehelp.main:(-e:1):0本例中的文本界面很清晰,但依然難以理解發(fā)生了什么事、顯示了什么信息、當(dāng)前在代碼特定部分中的哪處執(zhí)行。有一些 GUI 可供 Perl 調(diào)試器使用,但通過這些界面能實(shí)現(xiàn)的功能依然有限。最重要的是,通過這樣的界面調(diào)試 Web 應(yīng)用程序非常困難。無論在哪種情況下,上述調(diào)試系統(tǒng)的主要局限性均在于:它們都是您必須添加到編程工具箱中的其他工具。但任何一種都未為您的開發(fā)環(huán)境提供集成化的解決方案。這正是 Eclipse/EPIC Perl 調(diào)試器發(fā)揮巨大優(yōu)勢的場合。它內(nèi)置于 Eclipse 系統(tǒng)之中,因此,允許您在同一應(yīng)用程序內(nèi)同時(shí)實(shí)現(xiàn)開發(fā)、編輯和調(diào)試。在 EPIC 中導(dǎo)入和處理現(xiàn)有項(xiàng)目上面已經(jīng)介紹了傳統(tǒng)的 Perl 調(diào)試技術(shù),現(xiàn)在是 EPIC 登場的時(shí)候了,下面將介紹在項(xiàng)目中遍歷的方法 對于代碼執(zhí)行和調(diào)試來說,這是一項(xiàng)至關(guān)重要的技巧。要研究實(shí)現(xiàn)此目標(biāo)的最佳方法,需要以一個(gè)大型項(xiàng)目作為示例。為使項(xiàng)目進(jìn)入 Eclipse,您將使用導(dǎo)入系統(tǒng)將文件添加到新項(xiàng)目中。運(yùn)行導(dǎo)入要了解如何調(diào)試應(yīng)用程序,一個(gè)好方法就是首先將已開發(fā)出的應(yīng)用程序?qū)肽南到y(tǒng)中。這將為您奠定良好的基礎(chǔ),并使您有機(jī)會(huì)了解如何在大型項(xiàng)目中遍歷 在使用調(diào)試器接口時(shí),這是一項(xiàng)必備的技巧。按以下步驟操作即可導(dǎo)入一組現(xiàn)有文件:若必要,創(chuàng)建一個(gè)新項(xiàng)目(若想將文件添加到您自己的項(xiàng)目中,也可使用現(xiàn)有項(xiàng)目)。在 File 菜單中選擇 Import。從可用導(dǎo)入源清單中選擇 File system,參見圖 1。圖 1. 選擇導(dǎo)入源單擊 Next。在下一面板中單擊 Browse,選擇導(dǎo)入操作的源文件夾。文件夾將顯示在左側(cè)的面板中。源文件夾中的其他文件夾則以樹型結(jié)構(gòu)顯示在此列表中。選中文件夾中的文件則顯示在右側(cè)的面板中。單擊所顯示文件夾旁邊的復(fù)選框。也可按照同樣的機(jī)制選擇多個(gè)獨(dú)立文件和文件夾。您可選擇至此完成,但有時(shí),您可能不想導(dǎo)入此文件夾中的其他文件。手動(dòng)選擇文件非常復(fù)雜,您可利用過濾器自動(dòng)選擇文件導(dǎo)入:若想僅選擇 Perl 文件(通常是以 .pl 即腳本、.pm 即模塊結(jié)尾的那些文件),請單擊 Filter Types 按鈕。您將看到一個(gè)可能文件類型的清單提示(參見圖 2)。所有的 Perl 文件類型旁都帶有駱駝圖標(biāo)。單擊您希望導(dǎo)入的文件類型旁的復(fù)選框。圖 2. 選擇要導(dǎo)入的文件類型如果您為 Perl 文件使用了非標(biāo)準(zhǔn)擴(kuò)展名,可通過 Other Extensions 文本框添加您的擴(kuò)展名。確定最終的擴(kuò)展名清單后,單擊 OK。最好檢查一下已選擇了哪個(gè)文件。從源文件夾中選擇的各文件旁應(yīng)已有復(fù)選框。在圖 3 中可看到過濾后文件的示例。圖 3. 查看要導(dǎo)入的文件/文件夾查看原圖(大圖)如果確認(rèn)已選好的導(dǎo)入文件/文件夾無誤,即可單擊 Into Folder 文本框旁的 Browse 按鈕。系統(tǒng)將要求您選擇導(dǎo)入文件的目標(biāo)項(xiàng)目文件夾。單擊 Finish。項(xiàng)目已成功導(dǎo)入,下面將介紹如何在項(xiàng)目中遍歷。遍歷大型項(xiàng)目遍歷項(xiàng)目的方法有兩種,具體選擇哪種取決于您的位置。您可利用 Navigator 視圖瀏覽整個(gè)項(xiàng)目。此時(shí)可看到一個(gè)或多個(gè)打開項(xiàng)目的獨(dú)立文件夾和其中的文件。圖 4 給出了一個(gè)示例。圖 4. Navigator 視圖選中要在 Editor 中查看的特定文件后,Outline 視圖會(huì)顯示已導(dǎo)入文件中的模塊以及文件內(nèi)定義的所有子例程。兩者結(jié)合在一起,使文件布局和功能更易于理解。要跳過特定子例程,可在 Outline 視圖內(nèi)雙擊其名稱。圖 5 給出了一個(gè) Outline 視圖窗口的示例。圖 5. Outline 視圖EPIC 的 AutoLoader 限制值得注意的是,某些流行的 Perl 結(jié)構(gòu)和技術(shù)在 EPIC/Eclipse 中無法使用。AutoLoader 系統(tǒng)中就存在著一個(gè)這樣的限制,該系統(tǒng)提供了一種靈活、高效的途徑,可將模塊分割成較小的文件,在執(zhí)行期間自動(dòng)載入。AutoLoader 系統(tǒng)的工作方式是,將除存根自動(dòng)加載器 (stub auto-loader) 以外的所有代碼置入文件的文本部分中。這一文本部分通常用于存儲(chǔ)腳本數(shù)據(jù)(而非使用外部文件來存儲(chǔ)),因此假設(shè)它將會(huì)被忽略是安全的。但遺憾的是,這也意 味著 Eclipse 會(huì)完全忽略此代碼。代碼折疊可讀性使代碼易于理解,對調(diào)試代碼大有裨益。EPIC 插件提供的工具首先使代碼具有良好的格式,從而更具可讀性,并且更容易隱藏不再需要或不再希望看到的子例程及組件。代碼折疊 使您能夠隱藏給定子例程的定義。除了子例程聲明存根依然顯示外,子例程代碼定義的其他部分都可隱藏。如果在編輯器窗口中查看 RSS Feeder 腳本,將看到各子例程左側(cè)列中有一個(gè)短線標(biāo)記,如圖 6 所示。圖 6. 折疊前代碼中的子例程查看原圖(大圖)若單擊 parse_items_to_text() 旁的短線標(biāo)記,整個(gè)子例程定義將隱藏起來。關(guān)于折疊后的子例程定義示例,請參加圖 7。圖 7. 折疊后的子例程折疊后原短線標(biāo)記將變?yōu)榧犹枠?biāo)記(強(qiáng)調(diào)代碼已折疊)。單擊加號標(biāo)記將立即展開代碼,重新顯示出定義。運(yùn)行 Perl 應(yīng)用程序現(xiàn)在,您應(yīng)該對如何利用 EPIC 簡便地遍歷項(xiàng)目有了很好的理解。但在開始調(diào)試應(yīng)用程序之前,應(yīng)首先了解一下如何運(yùn)行應(yīng)用程序。要運(yùn)行應(yīng)用程序,需要?jiǎng)?chuàng)建一個(gè)新的運(yùn)行配置。RSS Feeder 應(yīng)用程序RSS Feeder 應(yīng)用程序的基礎(chǔ)知識(shí)已在 “Build Perl applications with Eclipse” 教程中介紹過。為方便起見,清單 3 中給出了本教程后面將用到的腳本。清單 3. RSS Feeder 腳本usestrict;usewarnings;useXML:RSS;useLWP:UserAgent;my$ua=LWP:UserAgent-new();my$feeds=MCslp=/wp-rss2.php;foreachmy$feed(sortkeys%$feeds)my($rss)=parse_rss_fromurl($feeds,$ua,$feed);parse_items_to_text($rss);subparse_rss_fromurlmy$feeds=shift;my$ua=shift;my$feed=shift;my$response=$ua-get($feeds-$feed);my$rss;if($response-is_success)$rss=XML:RSS-new();$rss-parse($response-_content);return($rss);subparse_items_to_textmy($feed)=_;foreachmy$i($feed-items)nextunlessdefined($i);my$len=length($i-title);print($i-title,n,(=x$len),n,$i-description,nn,$i-link,nn);這段腳本由一個(gè)處理散列的基本循環(huán)構(gòu)成,首先下載 RSS 提要源(使用 LWP),然后解析源(使用 XML:RSS)。所得到的對象將用于輸出 RSS 提要項(xiàng)的簡單文本表示。為執(zhí)行而配置應(yīng)用程序在介紹調(diào)試的細(xì)節(jié)之前,您首先應(yīng)了解運(yùn)行當(dāng)前在 Eclipse 內(nèi)開發(fā)的應(yīng)用程序的基礎(chǔ)知識(shí)。本節(jié)將延用介紹在 Eclipse 中開發(fā) Perl 應(yīng)用程序的教程中所生成的 RSS Feeder 應(yīng)用程序。我已利用本教程前面所介紹的技術(shù)將此應(yīng)用程序的文件導(dǎo)入系統(tǒng)。請按以下步驟配置欲執(zhí)行的項(xiàng)目中的腳本:從 Run 菜單中選擇 Run。您將看到一個(gè)如圖 8 所示的對話框:圖 8. 設(shè)置默認(rèn) Run 配置查看原圖(大圖)選擇 Perl Local 項(xiàng),并配置在調(diào)試或運(yùn)行一個(gè)本地 Perl 腳本(非遠(yuǎn)程或 CGI)時(shí)所使用的透視圖。運(yùn)行腳本時(shí),您的透視圖將自動(dòng)切換為此處所配置的透視圖。確保在此對話框左側(cè)的配置列表中選中了 Perl Local,且選擇了 New。您將看到用于創(chuàng)建新 Run 配置的對話框,如圖 9 所示。圖 9. 添加新 Run 配置查看原圖(大圖)配置您想執(zhí)行的項(xiàng)目和腳本的名稱。請注意,您也可以向腳本中添加任何命令行選項(xiàng)。切記添加配置名稱,務(wù)必注意此配置特定于此項(xiàng)目中的此腳本。您也可以通過 Conmon 面板設(shè)置特定選項(xiàng),例如將輸出發(fā)送到哪里、是否將此添加到 Run 菜單的可用腳本中以執(zhí)行、是否啟用控制臺(tái)等(參見圖 10)。圖 10. Common 配置面板查看原圖(大圖)單擊 Apply,再單擊 Close 保存配置。激活配置后,即可隨時(shí)運(yùn)行您的腳本。運(yùn)行您的應(yīng)用程序既然已經(jīng)獲得了活動(dòng)的 Run 配置,您就可以執(zhí)行您的腳本,并測定它是否按照您期待的方式工作。第一次運(yùn)行您所配置的腳本時(shí),需要手動(dòng)選擇配置。但這樣的手動(dòng)選擇僅需一次,此后可在 Run 菜單中直接將其作為 “歷史” 項(xiàng)目選擇并再次運(yùn)行。您還可編輯 Run 配置選項(xiàng),明確地將該腳本添加到 Run 菜單中。初次運(yùn)行您的配置時(shí),請按以下步驟進(jìn)行操作:從 Run 菜單中選擇 Run。從左側(cè)的配置列表中選擇配置。選擇 Run。您的腳本將被執(zhí)行,且其輸出被發(fā)送到 Eclipse Console。如果您未在 Eclipse 中打開 Console 視圖,可在 Window 菜單中選擇 Console 視圖打開它。圖 11 展示了此 RSS Feeder 腳本的部分輸出示例。圖 11. RSS Feeder 腳本的控制臺(tái)輸出查看原圖(大圖)您未必希望只是單純地運(yùn)行應(yīng)用程序,而不通過某種方式監(jiān)控或處理應(yīng)用程序,下面我們將就此進(jìn)行介紹。與您的應(yīng)用程序交互對于基本的文本腳本或通過標(biāo)準(zhǔn)輸入/輸出實(shí)現(xiàn)大多數(shù)交互的應(yīng)用程序來說,Eclipse 的 Console 視圖足以應(yīng)付。當(dāng)然,通過此界面能實(shí)現(xiàn)的交互是有限的,您可能會(huì)希望至少要增加控制臺(tái)視圖的大小,使其更便于使用。如果您創(chuàng)建了一個(gè)運(yùn)行配置的 CGI,執(zhí)行模型會(huì)略有不同。原因在于 EPIC 創(chuàng)建到腳本的臨時(shí) CGI 接口的方式,以及通過內(nèi)置 Web 客戶機(jī)或第三方客戶機(jī) 如 Internet Explorer、Safari 或 Firefox 提供 CGI 輸出的方式。在您調(diào)試 而非單純地執(zhí)行 應(yīng)用程序時(shí),CGI 腳本接口充分的交互性更有意義。調(diào)試通常需要較多的交互,因此下面我們將介紹調(diào)試過程中腳本執(zhí)行的細(xì)節(jié)。調(diào)試標(biāo)準(zhǔn)應(yīng)用程序既然您已經(jīng)理解了如何利用 EPIC 遍歷項(xiàng)目并運(yùn)行應(yīng)用程序,那么下面將開始介紹標(biāo)準(zhǔn)應(yīng)用程序的調(diào)試。需要您完成的工作僅僅是將標(biāo)準(zhǔn) Run 環(huán)境的配置更改為調(diào)試配置。Eclipse 隨后會(huì)提供一個(gè)調(diào)試透視圖,該透視圖支持標(biāo)準(zhǔn)調(diào)試工具(如斷點(diǎn)),并且能夠使您在執(zhí)行過程中查看變量。為調(diào)試而配置應(yīng)用程序請按以下步驟配置項(xiàng)目中要調(diào)試的腳本:從 Run 菜單中選擇 Debug。您將看到如圖 12 所示的對話框。圖 12. 調(diào)試配置查看原圖(大圖)選擇 Perl Local 項(xiàng),并配置在調(diào)試本地 Perl 腳本(非遠(yuǎn)程或 CGI)時(shí)所使用的透視圖。運(yùn)行腳本時(shí),您的視圖將自動(dòng)切換為此處所配置的透視圖。由于您是為調(diào)試而進(jìn)行配置,所以請選擇 Eclipse Debug 透視圖。您可以選擇創(chuàng)建新配置,也可使用現(xiàn)有配置。要?jiǎng)?chuàng)建新配置,請?jiān)诒緦υ捒蜃髠?cè)的配置列表中選擇 Perl Local,然后單擊 NewY。隨后將看到用于創(chuàng)建新 Debug 配置的對話框,如圖 13 所示。圖 13. 添加新 Debug 配置查看原圖(大圖)配置要執(zhí)行的項(xiàng)目和腳本的名稱,請注意,您也可以向腳本中添加任何命令行選項(xiàng)。切記添加配置名稱,務(wù)必注意此配置特定于此項(xiàng)目中的此腳本。單擊 Apply,再單擊 Close 保存配置。激活配置后,即可隨時(shí)調(diào)試您的腳本。單擊 Debug 可啟動(dòng)調(diào)試過程。Eclipse 調(diào)試界面Eclipse 的調(diào)試透視圖為 Eclipse 中的絕大多數(shù)調(diào)試系統(tǒng)共享和使用,包括在調(diào)試 C/C+ 和 Java 應(yīng)用程序時(shí)。圖 14 展示了調(diào)試透視圖的一個(gè)示例。圖 14. 調(diào)試透視圖查看原圖(大圖)調(diào)試透視圖由多個(gè)默認(rèn)視圖構(gòu)成,包括:Debug 視圖本視圖展示了正在運(yùn)行的腳本,包括單獨(dú)腳本中的多個(gè)線程。圖 15 給出了此視圖的一個(gè)特寫。此處該視圖中顯示的是正在運(yùn)行的腳本 (Main Thread) 和 Perl Debugger 線程(用作運(yùn)行腳本的接口)。請注意圖中還顯示了腳本中執(zhí)行暫停時(shí)所在的行。如果您從視圖中選擇此項(xiàng),則源代碼中的相應(yīng)行將顯示出來。Variables 視圖本視圖可用于顯示變量值,其輸出類似與本教程前面介紹傳統(tǒng)調(diào)試方法時(shí)提到的 Dumper() 函數(shù)所產(chǎn)生的輸出。后面我們將更詳細(xì)地介紹如何配置要查看的變量。Breakpoints 視圖本視圖顯示了為所調(diào)試的應(yīng)用程序配置的斷點(diǎn)。后面我們將更詳細(xì)地介紹配置斷點(diǎn)的相關(guān)內(nèi)容。 其他視圖您應(yīng)該已比較熟悉,如編輯器視圖、項(xiàng)目大綱視圖和控制臺(tái)視圖等。開始調(diào)試應(yīng)用程序后,您會(huì)希望開始單步執(zhí)行代碼行,并監(jiān)控輸出。調(diào)試器自動(dòng)在可執(zhí)行代碼的第一行處停止(導(dǎo)入所有模塊后)。單步執(zhí)行所調(diào)試的應(yīng)用程序單步執(zhí)行所調(diào)試的應(yīng)用程序使您能夠逐行、逐函數(shù)調(diào)用地監(jiān)控腳本的執(zhí)行。通過單步執(zhí)行,您可以通過函數(shù)調(diào)用、測試語句等跟蹤執(zhí)行,還可在代碼執(zhí)行期間監(jiān)控變量值。Eclipse 支持 5 種 step 模式,但在大多數(shù)情況下,EPCI 插件僅支持前三種??衫霉ぞ邫谏系?Step 按鈕(工具欄面板右側(cè)的后 5 個(gè)按鈕):Step Into 進(jìn)入函數(shù)、循環(huán)或其他語句。若函數(shù)可用,調(diào)試器將顯示源代碼,并允許您單步執(zhí)行源代碼。Step Over 跳過一條語句,轉(zhuǎn)向代碼中的下一條語句。Step return 若您已進(jìn)入函數(shù),則執(zhí)行函數(shù)中的全部代碼,包括其返回語句。您可以單擊 “Play” 按鈕(正是您的 VCR play 按鈕)重新開始執(zhí)行,直到預(yù)先配置好的斷點(diǎn)或腳本末 以先滿足的條件為準(zhǔn) 處停止,利用類似于 VCR 的 Pause 按鈕暫停,使用 Stop 按鈕完全停止執(zhí)行。如果您停止了執(zhí)行,想在同一腳本上重新啟動(dòng)調(diào)試過程,可右擊過程,并在菜單中選擇 Relaunch。添加/刪除斷點(diǎn)有時(shí)您希望在腳本執(zhí)行過程中暫?;蛲V箞?zhí)行,斷點(diǎn)正是代碼中執(zhí)行暫?;蛲V箷r(shí)所在的行。可想而知,斷點(diǎn)的功能正是在該點(diǎn)中斷執(zhí)行。為配置斷點(diǎn),請?jiān)谠创a中要添加斷點(diǎn)的行旁邊的邊框處右擊。您將看到一個(gè)提示菜單,允許您在代碼此處添加斷點(diǎn)。在設(shè)置斷點(diǎn)時(shí),您會(huì)發(fā)現(xiàn)啟用行號是非常有用的(通過同一提示菜單即可實(shí)現(xiàn))。添加斷點(diǎn)后,代碼行旁會(huì)出現(xiàn)一個(gè)斷點(diǎn)圖標(biāo),如圖 15 所示。斷點(diǎn)圖標(biāo)顯示在源代碼第 6 行的旁邊。圖 15. 帶有斷點(diǎn)的代碼查看原圖(大圖)您還可以使用 Breakpoints 視圖訪問已配置斷點(diǎn)的列表(如圖 16 所示),其中列出了項(xiàng)目中所有已配置斷點(diǎn)的類型、文件和行號。圖 16. Breakpoints 視圖要?jiǎng)h除斷點(diǎn),可在源代碼相應(yīng)行處再次右擊并選擇 Remove Breakpoint,也可從斷點(diǎn)列表中選擇要?jiǎng)h除的斷點(diǎn),然后右擊它,按同樣方式刪除。您還可以啟用和禁用斷點(diǎn),若您在調(diào)試同一代碼且想監(jiān)控相同的位置,但不必同時(shí)進(jìn)行監(jiān)控,那么這一功能是很方便的。監(jiān)控變量選中正在運(yùn)行的線程后,當(dāng)前范圍內(nèi)的全部變量將以列表形式顯示在 Variables 視圖中。圖 17 給出了 Variables 視圖的示例。圖 17. 調(diào)試器變量對絕大多數(shù)調(diào)試器而言,僅在您明確將變量添加到要監(jiān)控的變量列表后才能顯示變量,EPIC 調(diào)試器與此不同,它會(huì)自動(dòng)顯示當(dāng)前范圍內(nèi)的所有變量。如您所見,這里也顯示了變量的全部細(xì)節(jié)信息,您可以使用樹型界面來審查腳本中像嵌套數(shù)組和散列這樣的 復(fù)雜結(jié)構(gòu)的值。請注意,本地變量帶有一個(gè)包含 “L” 的圖標(biāo),其他所有變量則使用標(biāo)準(zhǔn)變量圖標(biāo)。在上一次執(zhí)行后發(fā)生了變化的變量會(huì)以紅色突出顯示。這使得在單步執(zhí)行應(yīng)用程序時(shí)尋找所更改的變量變得輕而易舉。除在您的腳本中所定義的變量外(包括當(dāng)前塊的全局變量和局部變量),變量視圖還會(huì)默認(rèn)地顯示腳本中間接使用的一些全局變量。例如,它會(huì)顯示特殊 STDIN、STDOUT 和 STDERR 變量的值。您還可選擇顯示內(nèi)部 Perl 變量(例如 $、%ENV 等)。單擊 View 菜單,選擇 Show Perl Internal Variables 即可。圖 18 顯示了一個(gè)啟用了此功能的 Variable 視圖。圖 18. 顯示標(biāo)準(zhǔn)內(nèi)部變量切記 Variable 視圖僅顯示當(dāng)前范圍內(nèi)的變量或全局變量。它不會(huì)顯示當(dāng)前范圍內(nèi)(函數(shù)、循環(huán)、塊,甚至是模塊或包)不可用的變量。調(diào)試 Perl CGI 應(yīng)用程序至此,您已經(jīng)了解了使用 EPIC 調(diào)試 Perl 應(yīng)用程序的好處,那么對于 Per CGI 應(yīng)用程序來說,情況又如何呢?由于 CGI 應(yīng)用程序是由 Web 服務(wù)器執(zhí)行的,通常通過 Web 瀏覽器輸出其信息,因此調(diào)試起來非常困難,除非您使用本教程一開始提到的事后調(diào)試技術(shù)。但 EPIC 為此類問題提供了一種獨(dú)特的解決方案。配置 CGI 調(diào)試會(huì)話要調(diào)試 Perl CGI 腳本,您需要具備一個(gè)正常工作的可用 Web 服務(wù)環(huán)境,如 Apache 或 IIS,且能夠向 IIS 目錄中寫入信息。EPIC 調(diào)試 CGI 應(yīng)用程序的方式就是作為 Web 服務(wù)器與客戶機(jī)之間的代理。這使其能夠控制和監(jiān)控腳本的執(zhí)行,即便從技術(shù)上來說,腳本是通過 Web 服務(wù)器存取的。請按以下步驟配置 CGI 調(diào)試會(huì)話:從 Run 菜單中選擇 Debug,打開 Debug 配置窗口。從可用配置類型列表中選擇 Perl CGI 配置。單擊 New 創(chuàng)建新配置。在 Configuration 面板中(如圖 19 所示)選擇要調(diào)試的項(xiàng)目??梢栽?Web Server 面板中按擴(kuò)展名選擇 CGI 腳本。圖 19. Configuration 面板查看原圖(大圖)在 Web Server 控制面板中(如圖 20 所示)為已配置的 Web 服務(wù)器配置 HTML 和 CGI 目錄。您需要將腳本復(fù)制到此目錄中(可使用 Eclipse 的 Export 函數(shù))。還需要配置在調(diào)試時(shí)要用到的 “啟動(dòng)” 文件的名稱。此文件將在首次訪問 Web 服務(wù)器時(shí)返回,其中應(yīng)包含到腳本的鏈接,或使用腳本的表單。圖 20. Web Server 面板查看原圖(大圖)若您需要設(shè)置自定義 CGI 環(huán)境變量,可使用 CGI Environment 面板來設(shè)置這些變量及其值。在 Browser 面板中,選擇您想用于調(diào)試腳本的瀏覽器。我發(fā)現(xiàn)內(nèi)置瀏覽器往往是最佳選擇。單擊 Apply。單擊 Debug 啟動(dòng)調(diào)試過程。調(diào)試 Perl CGI 腳本運(yùn)行 Perl CGI 腳本后,即可執(zhí)行在調(diào)試標(biāo)準(zhǔn)腳本時(shí)所執(zhí)行的全部功能。您同樣可以單步執(zhí)行、監(jiān)控變量、設(shè)置斷點(diǎn)以中斷執(zhí)行。在圖 21 中可看到 Perl CGI 腳本形式的 RSS Feeder 應(yīng)用程序的執(zhí)行示例。圖 21. 調(diào)試 Perl CGI 腳本查看原圖(大圖)了解了 Eclipse 作為腳本和實(shí)際 Web 服務(wù)器之間的代理工作的方法后,您就可以控制執(zhí)行了。甚至可輕而易舉地監(jiān)視和控制腳本中 HTML 的個(gè)別輸出。以這種方法調(diào)試 CGI 腳本時(shí),超時(shí)期通常較長,某些瀏覽器在這種情況下會(huì)出現(xiàn)問題。因此我建議使用更能容納 CGI 調(diào)試影響的內(nèi)置 Web 瀏覽器。調(diào)試正則表達(dá)式調(diào)試正則表達(dá)式的艱難程度盡人皆知,調(diào)試工作中通常還要構(gòu)建正則表達(dá)式,并根據(jù)不同的腳本測試其執(zhí)行。通過使用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 煤炭購銷合同擔(dān)保書
- 代購合作協(xié)議合同
- 江蘇商品房買賣合同模板
- 合同書電子版
- 安裝合同簡單版樣本
- 2025年人教A版九年級歷史下冊月考試卷含答案
- 2025年外研銜接版九年級歷史下冊階段測試試卷
- 2025年滬教版必修2歷史上冊月考試卷含答案
- 2025年湘教版九年級地理下冊月考試卷
- (正式版)JTT 1218.4-2024 城市軌道交通運(yùn)營設(shè)備維修與更新技術(shù)規(guī)范 第4部分:軌道
- 2024年漢中市行政事業(yè)單位國有資產(chǎn)管理委員會(huì)辦公室四級主任科員公務(wù)員招錄1人《行政職業(yè)能力測驗(yàn)》模擬試卷(答案詳解版)
- 客車交通安全培訓(xùn)課件
- 藝術(shù)培訓(xùn)校長述職報(bào)告
- ICU新進(jìn)人員入科培訓(xùn)-ICU常規(guī)監(jiān)護(hù)與治療課件
- 人教版一年數(shù)學(xué)下冊全冊分層作業(yè)設(shè)計(jì)
- 選擇性必修一 期末綜合測試(二)(解析版)2021-2022學(xué)年人教版(2019)高二數(shù)學(xué)選修一
- 學(xué)校制度改進(jìn)
- 各行業(yè)智能客服占比分析報(bào)告
- 年產(chǎn)30萬噸高鈦渣生產(chǎn)線技改擴(kuò)建項(xiàng)目環(huán)評報(bào)告公示
- 民謠酒吧項(xiàng)目創(chuàng)業(yè)計(jì)劃書
評論
0/150
提交評論