亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序

系統(tǒng) 1685 0

如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序

8/14/2010 11:30:36 PM
開始之前

  本教程將介紹 Eclipse 的 EPIC 插件提供的調(diào)試功能,該插件提供了功能豐富的調(diào)試環(huán)境 —— 可為 EPIC Perl 開發(fā)環(huán)境所用且與此開發(fā)環(huán)境相集成。本教程假設(shè)讀者了解 Eclipse 環(huán)境,并且有使用 Perl 的經(jīng)驗。

  關(guān)于本教程

  EPIC 結(jié)合了兩種有助于 Perl 應(yīng)用程序測試流程的系統(tǒng):RegExp 和調(diào)試器。RegExp 是一個測試 Perl 正則表達式的接口。正則表達式是許多 Perl 應(yīng)用程序的主要組成部分,但保證表達式的正確性是一個非常復(fù)雜的問題。使用 EPIC RegExp 視圖,您可以根據(jù)已知數(shù)據(jù)檢查結(jié)果,測試并修改正則表達式。

  EPIC Perl 調(diào)試器是一種較為傳統(tǒng)的工具,完全集成于 Eclipse 環(huán)境之中。除測試本地化腳本外,EPIC 調(diào)試器還可用于調(diào)試 Web 及遠程執(zhí)行 Perl 腳本,因此是多種環(huán)境下的理想工具。

  本教程將介紹如何導(dǎo)入和 移動 大型應(yīng)用程序、如何簡化應(yīng)用程序視圖以使代碼更易于理解,從而也更易于調(diào)試。另外還會介紹 EPIC 調(diào)試環(huán)境,它完全位于 Eclipse 內(nèi)部,為標(biāo)準(zhǔn)腳本、CGI 腳本和正則表達式提供了一個完整的調(diào)試環(huán)境。

  前提條件

  要開始使用 EPIC,需要滿足以下前提條件:

  Eclipse V3.1 或 3.0

Java ? 技術(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ù)隨時可用,并且確實有一些優(yōu)點。但它們也有著自身的局限性。理解其局限性有助于您理解為何需要一種更好的調(diào)試環(huán)境。

  Perl 中的調(diào)試簡介

  如果您問一位典型的 Perl 程序員怎樣調(diào)試其應(yīng)用程序,他多半會告訴您他只是使用簡單的輸出語句,在程序執(zhí)行時轉(zhuǎn)儲信息。例如,您可向循環(huán)中添加一條簡單的語句,來輸出您正在計算或處理的值,如清單 1 所示。


清單 1. 使用輸出語句進行調(diào)試

my $sth = $dbh->prepare($query); 

$sth->execute(); 

while(my $row = $sth->fetchrow_hashref()) 
{ 
  print STDERR Dumper($row); 

  printf('%s, %s (%s)<br/>', 
      $row->{album}, 
      $row->{artist}, 
      $row->{genre}); 
} 
$sth->finish(); 

  在這種情況下,您已輸出了從數(shù)據(jù)庫 ( MySQL ) 載入到 STDERR 的行轉(zhuǎn)儲。STDERR 使用起來非常方便,這是因為在 UNIX 主機上,您可將 STDERR 的輸出重定位到日志文件,同時使其他輸出照常定位到標(biāo)準(zhǔn)輸出。

  示例中的 Dumper() 函數(shù)會實際輸出任何變量的結(jié)構(gòu),包括嵌入式和嵌套的數(shù)組、散列及其他內(nèi)容。輸出格式與您手動生成的結(jié)構(gòu)形式相同。此函數(shù)(Data::Dumper 模塊的一部分)非常有用,既可作為以適于人類閱讀的格式輸出變量的方法,也可用于寫入一個能讀回的結(jié)構(gòu),使用 eval() 可重新創(chuàng)建一個新變量。

 事后調(diào)試

  在應(yīng)用程序運行時,利用輸出信息的輸出函數(shù)這種方式正是事后調(diào)試的一個例子。此時您并未實際監(jiān)控應(yīng)用程序的執(zhí)行,也沒有嘗試找出應(yīng)用程序運行過程中的問題,而是將信息轉(zhuǎn)儲出來,并等待執(zhí)行完成。

  在交互式調(diào)試難以實現(xiàn)的情況下,這一特殊的調(diào)試方法廣受人們的歡迎。例如,實時調(diào)試 CGI 應(yīng)用程序基本上是不可能實現(xiàn)的,因為應(yīng)用程序在遠程 服務(wù)器 上執(zhí)行,且由第二應(yīng)用程序(Web 服務(wù)器)執(zhí)行。不可能實時監(jiān)控腳本執(zhí)行。

  因此,事后調(diào)試有其用武之地,但也有一些顯而易見的局限性。舉例來說,在不更改代碼的情況下,您無法監(jiān)控任何變量,而一旦更改了代碼,您就必須再次運行程序,以獲得期望的輸出。

  同樣,您無法逐行單步調(diào)試程序的執(zhí)行。必須運行整個應(yīng)用程序,除非您強行停止它。如果要跟蹤函數(shù)調(diào)用和序列,就需要添加輸出語句,以顯示作出的是怎樣的決策,并顯示順序與序列,除此之外,別無他法可監(jiān)控或獲得信息。

  實時調(diào)試

  有多種實時調(diào)試系統(tǒng)(Perl 自帶的調(diào)試器就是其中之一),您可從使用 -d 命令行選項入手(參見清單 2)。該命令行選項會啟動一個交互式會話,通過此會話即可逐行單步調(diào)試、跳過代碼段、監(jiān)控變量和值,甚至在執(zhí)行過程中修改值。


清單 2. 使用 Perl 調(diào)試器

$ perl -d -e 0 

Loading DB routines from perl5db.pl version 1.28 
Editor support available. 

Enter h or 'h h' for help, or 'man perldebug' for more help. 

main::(-e:1):  0 

本例中的文本界面很清晰,但依然難以理解發(fā)生了什么事、顯示了什么信息、當(dāng)前在代碼特定部分中的哪處執(zhí)行。

  有一些 GUI 可供 Perl 調(diào)試器使用,但通過這些界面能實現(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)同時實現(xiàn)開發(fā)、編輯和調(diào)試。

  在 EPIC 中導(dǎo)入和處理現(xiàn)有項目

  上面已經(jīng)介紹了傳統(tǒng)的 Perl 調(diào)試技術(shù),現(xiàn)在是 EPIC 登場的時候了,下面將介紹在項目中遍歷的方法 —— 對于代碼執(zhí)行和調(diào)試來說,這是一項至關(guān)重要的技巧。要研究實現(xiàn)此目標(biāo)的最佳方法,需要以一個大型項目作為示例。為使項目進入 Eclipse,您將使用導(dǎo)入系統(tǒng)將文件添加到新項目中。

  運行導(dǎo)入

  要了解如何調(diào)試應(yīng)用程序,一個好方法就是首先將已開發(fā)出的應(yīng)用程序?qū)肽南到y(tǒng)中。這將為您奠定良好的基礎(chǔ),并使您有機會了解如何在大型項目中遍歷 —— 在使用調(diào)試器接口時,這是一項必備的技巧。

  按以下步驟操作即可導(dǎo)入一組現(xiàn)有文件:

  若必要,創(chuàng)建一個新項目(若想將文件添加到您自己的項目中,也可使用現(xiàn)有項目)。

  在 File 菜單中選擇 Import。

  從可用導(dǎo)入源清單中選擇 File system,參見圖 1。

圖 1. 選擇導(dǎo)入源
如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序

單擊 Next。

  在下一面板中單擊 Browse,選擇導(dǎo)入操作的源文件夾。文件夾將顯示在左側(cè)的面板中。源文件夾中的其他文件夾則以樹型結(jié)構(gòu)顯示在此列表中。選中文件夾中的文件則顯示在右側(cè)的面板中。

  單擊所顯示文件夾旁邊的復(fù)選框。也可按照同樣的機制選擇多個獨立文件和文件夾。

  您可選擇至此完成,但有時,您可能不想導(dǎo)入此文件夾中的其他文件。手動選擇文件非常復(fù)雜,您可利用過濾器自動選擇文件導(dǎo)入:

  若想僅選擇 Perl 文件(通常是以 .pl —— 即腳本、.pm —— 即模塊結(jié)尾的那些文件),請單擊 Filter Types 按鈕。

  您將看到一個可能文件類型的清單提示(參見圖 2)。所有的 Perl 文件類型旁都帶有駱駝圖標(biāo)。單擊您希望導(dǎo)入的文件類型旁的復(fù)選框。

圖 2. 選擇要導(dǎo)入的文件類型
如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序

  如果您為 Perl 文件使用了非標(biāo)準(zhǔn)擴展名,可通過 Other Extensions 文本框添加您的擴展名。

  確定最終的擴展名清單后,單擊 OK。

  最好檢查一下已選擇了哪個文件。從源文件夾中選擇的各文件旁應(yīng)已有復(fù)選框。在圖 3 中可看到過濾后文件的示例。

圖 3. 查看要導(dǎo)入的文件/文件夾
如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序

  查看原圖(大圖)

如果確認(rèn)已選好的導(dǎo)入文件/文件夾無誤,即可單擊 Into Folder 文本框旁的 Browse 按鈕。系統(tǒng)將要求您選擇導(dǎo)入文件的目標(biāo)項目文件夾。

  單擊 Finish。

  項目已成功導(dǎo)入,下面將介紹如何在項目中遍歷。

  遍歷大型項目

  遍歷項目的方法有兩種,具體選擇哪種取決于您的位置。您可利用 Navigator 視圖瀏覽整個項目。此時可看到一個或多個打開項目的獨立文件夾和其中的文件。圖 4 給出了一個示例。


圖 4. Navigator 視圖
如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序

  選中要在 Editor 中查看的特定文件后,Outline 視圖會顯示已導(dǎo)入文件中的模塊以及文件內(nèi)定義的所有子例程。兩者結(jié)合在一起,使文件布局和功能更易于理解。要跳過特定子例程,可在 Outline 視圖內(nèi)雙擊其名稱。圖 5 給出了一個 Outline 視圖窗口的示例。


圖 5. Outline 視圖
如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序

  EPIC 的 AutoLoader 限制

  值得注意的是,某些流行的 Perl 結(jié)構(gòu)和技術(shù)在 EPIC/Eclipse 中無法使用。AutoLoader 系統(tǒng)中就存在著一個這樣的限制,該系統(tǒng)提供了一種靈活、高效的途徑,可將模塊分割成較小的文件,在執(zhí)行期間自動載入。

  AutoLoader 系統(tǒng)的工作方式是,將除存根自動加載器 (stub auto-loader) 以外的所有代碼置入文件的文本部分中。這一文本部分通常用于存儲腳本數(shù)據(jù)(而非使用外部文件來存儲),因此假設(shè)它將會被忽略是安全的。但遺憾的是,這也意味著 Eclipse 會完全忽略此代碼。

代碼折疊

  可讀性使代碼易于理解,對調(diào)試代碼大有裨益。EPIC 插件提供的工具首先使代碼具有良好的格式,從而更具可讀性,并且更容易隱藏不再需要或不再希望看到的子例程及組件。

  代碼折疊 使您能夠隱藏給定子例程的定義。除了子例程聲明存根依然顯示外,子例程代碼定義的其他部分都可隱藏。

  如果在編輯器窗口中查看 RSS Feeder 腳本,將看到各子例程左側(cè)列中有一個短線標(biāo)記,如圖 6 所示。


圖 6. 折疊前代碼中的子例程
如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序

  查看原圖(大圖)

  若單擊 parse_items_to_text() 旁的短線標(biāo)記,整個子例程定義將隱藏起來。關(guān)于折疊后的子例程定義示例,請參加圖 7。


圖 7. 折疊后的子例程
如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序

  折疊后原短線標(biāo)記將變?yōu)榧犹枠?biāo)記(強調(diào)代碼已折疊)。單擊加號標(biāo)記將立即展開代碼,重新顯示出定義。

  運行 Perl 應(yīng)用程序

  現(xiàn)在,您應(yīng)該對如何利用 EPIC 簡便地遍歷項目有了很好的理解。但在開始調(diào)試應(yīng)用程序之前,應(yīng)首先了解一下如何運行應(yīng)用程序。要運行應(yīng)用程序,需要創(chuàng)建一個新的運行配置。

  RSS Feeder 應(yīng)用程序

  RSS Feeder 應(yīng)用程序的基礎(chǔ)知識已在 “Build Perl applications with Eclipse” 教程中介紹過。為方便起見,清單 3 中給出了本教程后面將用到的腳本。

清單 3. RSS Feeder 腳本

use strict; 
use warnings; 
use  XML ::RSS; 
use LWP::UserAgent; 
my $ua = LWP::UserAgent->new(); 
my $feeds = { "MCslp" => 'http://www.mcslp.com/wp-rss2. php ' }; 
foreach my $feed ( sort keys %{$feeds} ) 
{ 
  my ($rss) = parse_rss_fromurl( $feeds, $ua, $feed ); 
  parse_items_to_text($rss);   
} 

sub parse_rss_fromurl 
{ 
  my $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); 
} 

sub parse_items_to_text 
{ 
  my ($feed) = @_; 
  foreach my $i ( @{ $feed->{items} } ) 
  { 
    next unless defined($i); 
    my $len = length( $i->{"title"} ); 
    print($i->{"title"}, 
       "/n", 
       ( '=' x $len ), 
       "/n", 
       $i->{"description"}, 
       "/n/n", 
       $i->{"link"}, 
       "/n/n" ); 
  } 
} 

這段腳本由一個處理散列的基本循環(huán)構(gòu)成,首先下載 RSS 提要源(使用 LWP),然后解析源(使用 XML::RSS)。所得到的對象將用于輸出 RSS 提要項的簡單文本表示。

  為執(zhí)行而配置應(yīng)用程序

  在介紹調(diào)試的細節(jié)之前,您首先應(yīng)了解運行當(dāng)前在 Eclipse 內(nèi)開發(fā)的應(yīng)用程序的基礎(chǔ)知識。本節(jié)將延用介紹在 Eclipse 中開發(fā) Perl 應(yīng)用程序的教程中所生成的 RSS Feeder 應(yīng)用程序。我已利用本教程前面所介紹的技術(shù)將此應(yīng)用程序的文件導(dǎo)入系統(tǒng)。

  請按以下步驟配置欲執(zhí)行的項目中的腳本:

  從 Run 菜單中選擇 Run。您將看到一個如圖 8 所示的對話框:

圖 8. 設(shè)置默認(rèn) Run 配置
如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序

  查看原圖(大圖)

  選擇 Perl Local 項,并配置在調(diào)試或運行一個本地 Perl 腳本(非遠程或 CGI)時所使用的透視圖。運行腳本時,您的透視圖將自動切換為此處所配置的透視圖。

  確保在此對話框左側(cè)的配置列表中選中了 Perl Local,且選擇了 New。您將看到用于創(chuàng)建新 Run 配置的對話框,如圖 9 所示。

圖 9. 添加新 Run 配置
如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序

  查看原圖(大圖)

配置您想執(zhí)行的項目和腳本的名稱。請注意,您也可以向腳本中添加任何命令行選項。切記添加配置名稱,務(wù)必注意此配置特定于此項目中的此腳本。

  您也可以通過 Conmon 面板設(shè)置特定選項,例如將輸出發(fā)送到哪里、是否將此添加到 Run 菜單的可用腳本中以執(zhí)行、是否啟用控制臺等(參見圖 10)。

圖 10. Common 配置面板
如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序

  查看原圖(大圖)

  單擊 Apply,再單擊 Close 保存配置。

  激活配置后,即可隨時運行您的腳本。

  運行您的應(yīng)用程序

  既然已經(jīng)獲得了活動的 Run 配置,您就可以執(zhí)行您的腳本,并測定它是否按照您期待的方式工作。

  第一次運行您所配置的腳本時,需要手動選擇配置。但這樣的手動選擇僅需一次,此后可在 Run 菜單中直接將其作為 “歷史” 項目選擇并再次運行。您還可編輯 Run 配置選項,明確地將該腳本添加到 Run 菜單中。

  初次運行您的配置時,請按以下步驟進行操作:

  從 Run 菜單中選擇 Run。

  從左側(cè)的配置列表中選擇配置。

  選擇 Run。

  您的腳本將被執(zhí)行,且其輸出被發(fā)送到 Eclipse Console。

  如果您未在 Eclipse 中打開 Console 視圖,可在 Window 菜單中選擇 Console 視圖打開它。

  圖 11 展示了此 RSS Feeder 腳本的部分輸出示例。


圖 11. RSS Feeder 腳本的控制臺輸出
如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序

  查看原圖(大圖)

  您未必希望只是單純地運行應(yīng)用程序,而不通過某種方式監(jiān)控或處理應(yīng)用程序,下面我們將就此進行介紹。

  與您的應(yīng)用程序交互

  對于基本的文本腳本或通過標(biāo)準(zhǔn)輸入/輸出實現(xiàn)大多數(shù)交互的應(yīng)用程序來說,Eclipse 的 Console 視圖足以應(yīng)付。當(dāng)然,通過此界面能實現(xiàn)的交互是有限的,您可能會希望至少要增加控制臺視圖的大小,使其更便于使用。

  如果您創(chuàng)建了一個運行配置的 CGI,執(zhí)行模型會略有不同。原因在于 EPIC 創(chuàng)建到腳本的臨時 CGI 接口的方式,以及通過內(nèi)置 Web 客戶機或第三方客戶機 —— 如 Internet Explorer、Safari 或 Firefox —— 提供 CGI 輸出的方式。

  在您調(diào)試 —— 而非單純地執(zhí)行 —— 應(yīng)用程序時,CGI 腳本接口充分的交互性更有意義。調(diào)試通常需要較多的交互,因此下面我們將介紹調(diào)試過程中腳本執(zhí)行的細節(jié)。

  調(diào)試標(biāo)準(zhǔn)應(yīng)用程序

  既然您已經(jīng)理解了如何利用 EPIC 遍歷項目并運行應(yīng)用程序,那么下面將開始介紹標(biāo)準(zhǔn)應(yīng)用程序的調(diào)試。

  需要您完成的工作僅僅是將標(biāo)準(zhǔn) Run 環(huán)境的配置更改為調(diào)試配置。Eclipse 隨后會提供一個調(diào)試透視圖,該透視圖支持標(biāo)準(zhǔn)調(diào)試工具(如斷點),并且能夠使您在執(zhí)行過程中查看變量。

  為調(diào)試而配置應(yīng)用程序

  請按以下步驟配置項目中要調(diào)試的腳本:

  從 Run 菜單中選擇 Debug。您將看到如圖 12 所示的對話框。


圖 12. 調(diào)試配置
如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序

  查看原圖(大圖)

  選擇 Perl Local 項,并配置在調(diào)試本地 Perl 腳本(非遠程或 CGI)時所使用的透視圖。運行腳本時,您的視圖將自動切換為此處所配置的透視圖。由于您是為調(diào)試而進行配置,所以請選擇 Eclipse Debug 透視圖。

  您可以選擇創(chuàng)建新配置,也可使用現(xiàn)有配置。要創(chuàng)建新配置,請在本對話框左側(cè)的配置列表中選擇 Perl Local,然后單擊 NewY。隨后將看到用于創(chuàng)建新 Debug 配置的對話框,如圖 13 所示。

圖 13. 添加新 Debug 配置
如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序

  查看原圖(大圖)

  配置要執(zhí)行的項目和腳本的名稱,請注意,您也可以向腳本中添加任何命令行選項。切記添加配置名稱,務(wù)必注意此配置特定于此項目中的此腳本。

  單擊 Apply,再單擊 Close 保存配置。

  激活配置后,即可隨時調(diào)試您的腳本。單擊 Debug 可啟動調(diào)試過程。

  Eclipse 調(diào)試界面

  Eclipse 的調(diào)試透視圖為 Eclipse 中的絕大多數(shù)調(diào)試系統(tǒng)共享和使用,包括在調(diào)試 C/C++ 和 Java 應(yīng)用程序時。圖 14 展示了調(diào)試透視圖的一個示例。


圖 14. 調(diào)試透視圖
如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序

  查看原圖(大圖)

  調(diào)試透視圖由多個默認(rèn)視圖構(gòu)成,包括:

  Debug 視圖本視圖展示了正在運行的腳本,包括單獨腳本中的多個線程。圖 15 給出了此視圖的一個特寫。此處該視圖中顯示的是正在運行的腳本 (Main Thread) 和 Perl Debugger 線程(用作運行腳本的接口)。請注意圖中還顯示了腳本中執(zhí)行暫停時所在的行。如果您從視圖中選擇此項,則源代碼中的相應(yīng)行將顯示出來。Variables 視圖本視圖可用于顯示變量值,其輸出類似與本教程前面介紹傳統(tǒng)調(diào)試方法時提到的 Dumper() 函數(shù)所產(chǎn)生的輸出。后面我們將更詳細地介紹如何配置要查看的變量。Breakpoints 視圖本視圖顯示了為所調(diào)試的應(yīng)用程序配置的斷點。后面我們將更詳細地介紹配置斷點的相關(guān)內(nèi)容。

  其他視圖您應(yīng)該已比較熟悉,如編輯器視圖、項目大綱視圖和控制臺視圖等。

  開始調(diào)試應(yīng)用程序后,您會希望開始單步執(zhí)行代碼行,并監(jiān)控輸出。調(diào)試器自動在可執(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 個按鈕):

  Step Into —— 進入函數(shù)、循環(huán)或其他語句。若函數(shù)可用,調(diào)試器將顯示源代碼,并允許您單步執(zhí)行源代碼。

  Step Over —— 跳過一條語句,轉(zhuǎn)向代碼中的下一條語句。

 Step return —— 若您已進入函數(shù),則執(zhí)行函數(shù)中的全部代碼,包括其返回語句。

  您可以單擊 “Play” 按鈕(正是您的 VCR play 按鈕)重新開始執(zhí)行,直到預(yù)先配置好的斷點或腳本末 —— 以先滿足的條件為準(zhǔn) —— 處停止,利用類似于 VCR 的 Pause 按鈕暫停,使用 Stop 按鈕完全停止執(zhí)行。

  如果您停止了執(zhí)行,想在同一腳本上重新啟動調(diào)試過程,可右擊過程,并在菜單中選擇 Relaunch。

  添加/刪除斷點

  有時您希望在腳本執(zhí)行過程中暫停或停止執(zhí)行,斷點正是代碼中執(zhí)行暫停或停止時所在的行。可想而知,斷點的功能正是在該點中斷執(zhí)行。

  為配置斷點,請在源代碼中要添加斷點的行旁邊的邊框處右擊。

  您將看到一個提示菜單,允許您在代碼此處添加斷點。在設(shè)置斷點時,您會發(fā)現(xiàn)啟用行號是非常有用的(通過同一提示菜單即可實現(xiàn))。

  添加斷點后,代碼行旁會出現(xiàn)一個斷點圖標(biāo),如圖 15 所示。斷點圖標(biāo)顯示在源代碼第 6 行的旁邊。


圖 15. 帶有斷點的代碼
如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序

  查看原圖(大圖)

  您還可以使用 Breakpoints 視圖訪問已配置斷點的列表(如圖 16 所示),其中列出了項目中所有已配置斷點的類型、文件和行號。


圖 16. Breakpoints 視圖
如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序

要刪除斷點,可在源代碼相應(yīng)行處再次右擊并選擇 Remove Breakpoint,也可從斷點列表中選擇要刪除的斷點,然后右擊它,按同樣方式刪除。您還可以啟用和禁用斷點,若您在調(diào)試同一代碼且想監(jiān)控相同的位置,但不必同時進行監(jiān)控,那么這一功能是很方便的。

  監(jiān)控變量

  選中正在運行的線程后,當(dāng)前范圍內(nèi)的全部變量將以列表形式顯示在 Variables 視圖中。圖 17 給出了 Variables 視圖的示例。


圖 17. 調(diào)試器變量
如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序

  對絕大多數(shù)調(diào)試器而言,僅在您明確將變量添加到要監(jiān)控的變量列表后才能顯示變量,EPIC 調(diào)試器與此不同,它會自動顯示當(dāng)前范圍內(nèi)的所有變量。如您所見,這里也顯示了變量的全部細節(jié)信息,您可以使用樹型界面來審查腳本中像嵌套數(shù)組和散列這樣的復(fù)雜結(jié)構(gòu)的值。請注意,本地變量帶有一個包含 “L” 的圖標(biāo),其他所有變量則使用標(biāo)準(zhǔn)變量圖標(biāo)。

  在上一次執(zhí)行后發(fā)生了變化的變量會以紅色突出顯示。這使得在單步執(zhí)行應(yīng)用程序時尋找所更改的變量變得輕而易舉。

  除在您的腳本中所定義的變量外(包括當(dāng)前塊的全局變量和局部變量),變量視圖還會默認(rèn)地顯示腳本中間接使用的一些全局變量。例如,它會顯示特殊 STDIN、STDOUT 和 STDERR 變量的值。

  您還可選擇顯示內(nèi)部 Perl 變量(例如 $$、%ENV 等)。單擊 View 菜單,選擇 Show Perl Internal Variables 即可。圖 18 顯示了一個啟用了此功能的 Variable 視圖。


圖 18. 顯示標(biāo)準(zhǔn)內(nèi)部變量
如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序

 切記 Variable 視圖僅顯示當(dāng)前范圍內(nèi)的變量或全局變量。它不會顯示當(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 為此類問題提供了一種獨特的解決方案。

  配置 CGI 調(diào)試會話

  要調(diào)試 Perl CGI 腳本,您需要具備一個正常工作的可用 Web 服務(wù)環(huán)境,如 Apache IIS ,且能夠向 IIS 目錄中寫入信息。EPIC 調(diào)試 CGI 應(yīng)用程序的方式就是作為 Web 服務(wù)器與客戶機之間的代理。這使其能夠控制和監(jiān)控腳本的執(zhí)行,即便從技術(shù)上來說,腳本是通過 Web 服務(wù)器存取的。

  請按以下步驟配置 CGI 調(diào)試會話:

  從 Run 菜單中選擇 Debug,打開 Debug 配置窗口。

  從可用配置類型列表中選擇 Perl CGI 配置。

  單擊 New 創(chuàng)建新配置。

  在 Configuration 面板中(如圖 19 所示)選擇要調(diào)試的項目。可以在 Web Server 面板中按擴展名選擇 CGI 腳本。

圖 19. Configuration 面板
如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序

  查看原圖(大圖)

在 Web Server 控制面板中(如圖 20 所示)為已配置的 Web 服務(wù)器配置 HTML 和 CGI 目錄。您需要將腳本復(fù)制到此目錄中(可使用 Eclipse 的 Export 函數(shù))。還需要配置在調(diào)試時要用到的 “啟動” 文件的名稱。此文件將在首次訪問 Web 服務(wù)器時返回,其中應(yīng)包含到腳本的鏈接,或使用腳本的表單。

圖 20. Web Server 面板
如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序

  查看原圖(大圖)

  若您需要設(shè)置自定義 CGI 環(huán)境變量,可使用 CGI Environment 面板來設(shè)置這些變量及其值。

  在 Browser 面板中,選擇您想用于調(diào)試腳本的瀏覽器。我發(fā)現(xiàn)內(nèi)置瀏覽器往往是最佳選擇。

  單擊 Apply。

  單擊 Debug 啟動調(diào)試過程。

  調(diào)試 Perl CGI 腳本

  運行 Perl CGI 腳本后,即可執(zhí)行在調(diào)試標(biāo)準(zhǔn)腳本時所執(zhí)行的全部功能。您同樣可以單步執(zhí)行、監(jiān)控變量、設(shè)置斷點以中斷執(zhí)行。

  在圖 21 中可看到 Perl CGI 腳本形式的 RSS Feeder 應(yīng)用程序的執(zhí)行示例。


圖 21. 調(diào)試 Perl CGI 腳本
如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序

  查看原圖(大圖)

  了解了 Eclipse 作為腳本和實際 Web 服務(wù)器之間的代理工作的方法后,您就可以控制執(zhí)行了。甚至可輕而易舉地監(jiān)視和控制腳本中 HTML 的個別輸出。以這種方法調(diào)試 CGI 腳本時,超時期通常較長,某些瀏覽器在這種情況下會出現(xiàn)問題。因此我建議使用更能容納 CGI 調(diào)試影響的內(nèi)置 Web 瀏覽器。

調(diào)試正則表達式

  調(diào)試正則表達式的艱難程度盡人皆知,調(diào)試工作中通常還要構(gòu)建正則表達式,并根據(jù)不同的腳本測試其執(zhí)行。通過使用交互式的正則表達式測試系統(tǒng),您可以加快整個過程。EPIC 插件正是這樣的一個系統(tǒng)。

  如果您向 Eclipse 透視圖中添加正則表達式視圖(開發(fā)或調(diào)試時),就可以根據(jù)已知值輸入和測試單獨的正則表達式,而無需為此創(chuàng)建腳本。圖 22 顯示了工作中的 RegExp 視圖。


圖 22. 使用正則表達式視圖
如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序

  使用方法時,在頂端的文本框中輸入正則表達式,在 Match 文本框中輸入作為測試依據(jù)的文本。您還可添加選項,如忽略大小寫、匹配多行字符串等,只需選中恰當(dāng)?shù)膹?fù)選框即可。

  若正則表達式正確,則您會看到一個綠色的指示標(biāo)記。不正確的表達式則為紅色,未經(jīng)核對的表達式為黑色。

  視圖右側(cè)的按鈕用于執(zhí)行以下操作(由左至右):

  Stop execution停止正則表達式的執(zhí)行。Step backward在有多個元素(例如,多個組)的正則表達式中,此按鈕的作用是沿匹配元素向后移動。相應(yīng)地突出顯示匹配文本中匹配的元素。例如,在圖 22 所示的正則表達式和匹配文本中,最先匹配的是數(shù)字,隨后是名稱。Step forwardStep forward 將向前遍歷正則表達式中的匹配元素。Run在整個文本塊上運行正則表達式。成功運行的塊將以不同的顏色突出顯示,如圖 23 所示。


圖 23. 運行整個正則表達式
如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序

  在調(diào)試標(biāo)準(zhǔn)腳本時,正則表達式調(diào)試器/測試器視圖也變?yōu)榭捎谩D踔量梢栽O(shè)置一個特殊的正則表達式斷點。

  現(xiàn)在您應(yīng)該已經(jīng)學(xué)會了如何利用 EPIC 調(diào)試您的 Perl CGI 應(yīng)用程序。

  結(jié)束語

  在本教程中,我們介紹了調(diào)試 Perl 腳本時可以使用的方法。從在傳統(tǒng) Perl 開發(fā)環(huán)境中所使用的方法開始。總體而言,其中包括兩種方式,使用 print() 函數(shù)并監(jiān)控輸出或使用 Perl 所提供的調(diào)試器。這兩種方法都有一些局限性。

  利用 EPIC —— Eclipse 的 Perl 開發(fā)環(huán)境插件,您可以調(diào)試 Perl 腳本和 Perl CGI 應(yīng)用程序。您希望一個調(diào)試器具備的一切功能都可以通過 EPIC 獲得,包括單步處理、變量監(jiān)控,以及設(shè)置斷點并監(jiān)控腳本的執(zhí)行。您還可以通過 Eclipse/EPIC 調(diào)試 CGI 腳本,利用在 Eclipse 中運行腳本同時直接將腳本輸出定位到 Web 瀏覽器(包括 Eclipse 所提供的內(nèi)置 Web 瀏覽器)這樣的方式即可。最后,我們還介紹了在腳本內(nèi)調(diào)試正則表達式的方法 —— 特別地,可在開發(fā)過程中實現(xiàn)這樣的調(diào)試。

  通過本教程介紹的 EPIC 所提供的功能,以及 “Build Perl applications with Eclipse” 教程中所介紹的功能,您可以了解,該插件提供了一個完整的環(huán)境,可使您在 Eclipse 內(nèi)開發(fā)和測試 Perl 應(yīng)用程序。

如何用 Eclipse 調(diào)試 Perl 應(yīng)用程序


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 大尺度毛片 | 湿湿影院在线观看 | 国产精品久久久久久久久夜色 | 国产精品福利一区二区久久 | 日韩 在线视频精品 | 热热九九| 2019中文字幕视频 | 国产午夜亚洲精品第一区 | 国产精品18久久久久久久久久 | 久久99亚洲精品久久久久网站 | 国产精品久久久精品视频 | 国产精品免费视频一区一 | 伊人69| 久草精品免费 | 日本黄色网址视频 | 国产精品国语自产拍在线观看 | 成人免费视频在线看 | 久久久久欧美精品观看 | 老司机深夜福利网站 | 亚洲精品www久久久久久久软件 | 99这里只有精品66视频 | 九九热国产在线 | 国产成人综合网亚洲欧美在线 | 亚洲欧美卡通成人制服动漫 | 国产99r视频精品免费观看 | 99精品国产兔费观看久久99 | 免费一级黄色毛片 | 日本视频不卡 | 亚洲第一区二区快射影院 | 操日日 | 久草在现| 中文国产成人精品久久无广告 | 日韩成人 | 亚洲成人黄色在线 | 一本色道久久综合亚洲精品高清 | 96影院| 久草视频在线免费播放 | 91精品国产爱久久久久 | 欧美激情高清免费不卡 | 成人毛片在线视频 | 一级a毛片免费观看 |