溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Perl語(yǔ)言中Perl如何調(diào)試

發(fā)布時(shí)間:2021-12-06 10:11:15 來(lái)源:億速云 閱讀:188 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹Perl語(yǔ)言中Perl如何調(diào)試,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

Perl調(diào)試的技巧

錯(cuò)誤所帶來(lái)的麻煩

軟件開發(fā)人員通常都低估了軟件測(cè)試的重要性。這一現(xiàn)象的根本原因很簡(jiǎn)單:處理錯(cuò)誤很困難!因?yàn)殄e(cuò)誤往往暴露了代碼的根本缺陷,所以有時(shí)候開發(fā)人員甚至?xí)榱藥讉€(gè)錯(cuò)誤而從頭開始重新編寫項(xiàng)目的主要部分。

我認(rèn)為,調(diào)試如此重要,以至于至少要為其分配整個(gè)項(xiàng)目30%的時(shí)間。額外的調(diào)試時(shí)間將導(dǎo)致更好的產(chǎn)品。另一方面,如果為了更快地推出軟件而縮短調(diào)試時(shí)間,那么在軟件生成后,您將花上雙份的時(shí)間來(lái)修復(fù)那些稍后暴露出的問題。

有三種基本類型的錯(cuò)誤:編碼錯(cuò)誤、文檔錯(cuò)誤和需求錯(cuò)誤。需求錯(cuò)誤通常由于需求不嚴(yán)密或缺少需求而導(dǎo)致。文檔錯(cuò)誤存在于手冊(cè)或聯(lián)機(jī)幫助中。編碼錯(cuò)誤是由程序員在實(shí)現(xiàn)需求時(shí)的錯(cuò)誤而引起的。不幸的是,需求錯(cuò)誤和文檔錯(cuò)誤不在本文范圍之內(nèi),因此,我們只好只討論如何“檢測(cè)”、“解決”和“修復(fù)”編碼錯(cuò)誤了。

Perl調(diào)試的基本概念

我們已經(jīng)將編碼錯(cuò)誤定義成程序員在實(shí)現(xiàn)需求時(shí)產(chǎn)生的錯(cuò)誤。編碼錯(cuò)誤會(huì)導(dǎo)致不正確的程序行為(偏離需求的行為)。因此,程序員在編寫或調(diào)試程序之前首先應(yīng)該知道的是程序需求。

Perl調(diào)試與狩獵沒什么不同。***步是檢測(cè)錯(cuò)誤(通過觀察錯(cuò)誤的行為并確認(rèn)其模式)。在這個(gè)階段,錯(cuò)誤只是一些癥狀。

第二步是解決錯(cuò)誤。因?yàn)楸仨氁谠创a中消除錯(cuò)誤,所以,應(yīng)該有一個(gè)精通程序的人來(lái)檢查錯(cuò)誤,并知道這些錯(cuò)誤的根本原因。如果代碼理解起來(lái)更容易,并且現(xiàn)在的代碼沒有比當(dāng)初錯(cuò)誤版本中的代碼更多,則您可能做對(duì)了。

第三步,也是***一步,是修復(fù)錯(cuò)誤(請(qǐng)注意“修復(fù)”與“解決”是有區(qū)別的)。調(diào)試程序?qū)⒃创a更改放入“現(xiàn)場(chǎng)”的生產(chǎn)過程,然后檢查它是否正確。如果代碼不正確,則表明您沒有解決錯(cuò)誤,甚至更糟糕的是,可能還引入了新的錯(cuò)誤。既然解決錯(cuò)誤的目的不應(yīng)該是引入新錯(cuò)誤,請(qǐng)確保在解決錯(cuò)誤之后修復(fù)每個(gè)錯(cuò)誤。

要確保迅速找到錯(cuò)誤并很好地理解它們,您應(yīng)該對(duì)調(diào)試過程中程序使用模塊和類在每個(gè)主要分支處的操作非常清楚。當(dāng)然,這要求您對(duì)編寫代碼所用的語(yǔ)言(在我們的示例中是Perl)有深入的了解。因?yàn)榇嬖谒羞@些需求,所以很難找到好的軟件測(cè)試人員。

Perl調(diào)試器

Perl程序員的***個(gè)資源是Perl所帶的調(diào)試器。如您所見,著手使用該調(diào)試器是非常容易的。

用調(diào)試器運(yùn)行一個(gè)腳本

perl-dprogram.pl

Perl調(diào)試器自帶幫助('h'或'hh'分別用于詳細(xì)和簡(jiǎn)短的幫助屏幕)。perldocperldebug頁(yè)面(在命令提示窗口輸入"perldocperldebug")有更完整的Perl調(diào)試器描述。
關(guān)于Perl調(diào)試器的結(jié)論

Emacs編輯器支持Perl調(diào)試器并使其更易于使用。您可以在Emacs中使用Info(輸入M-xinfo)來(lái)閱讀有關(guān)GUDEmacs的更詳細(xì)信息。GUD是與Perl調(diào)試器一起工作的全局調(diào)試方式(當(dāng)在Emacs中編輯Perl程序時(shí)輸入M-xperldb)。

只需少量工作就可以讓vi系列的編輯器也能支持Perl調(diào)試器。有關(guān)詳細(xì)信息,請(qǐng)參閱perldocperldebug頁(yè)面。有關(guān)其它編輯器的信息,請(qǐng)參考每個(gè)編輯器的文檔。

Perl內(nèi)置的調(diào)試器是一個(gè)強(qiáng)大的工具,可以執(zhí)行比我們剛剛看到的簡(jiǎn)單用法復(fù)雜得多的任務(wù)。但它的確要求使用者具備大量Perl專門知識(shí)。正因?yàn)槿绱耍覀儸F(xiàn)在要看一些簡(jiǎn)單些的工具,這些工具將更適合初級(jí)和中級(jí)Perl程序員。

Devel::ptkdb

要使用Devel::ptkdb調(diào)試器,首先得從CPAN(請(qǐng)參閱下面的參考資料)下載它并將它安裝在您的系統(tǒng)上。(某些用戶可能還需要安裝Tk模塊,該模塊也可以從CPAN獲得。)就我個(gè)人看來(lái),Devel::ptkdb在UNIX系統(tǒng)(如Linux)上***用。(雖然在理論上Devel::ptkdb并不限于與UNIX兼容的系統(tǒng),但是,我從未聽說(shuō)過有人成功地在Windows上使用Devel::ptkdb。正如一句老話所講:除了滑雪穿過旋轉(zhuǎn)門之外,任何事都是可能的。)

如果無(wú)法讓系統(tǒng)管理員為您安裝(例如,因?yàn)槟约壕褪窍到y(tǒng)管理員),可以嘗試在命令提示行執(zhí)行以下操作(可能需要以root身份執(zhí)行這些操作):

從CPAN安裝Devel::ptkdb

perl-MCPAN-e'installTk'

perl-MCPAN-e'installDevel::ptkdb'

如果是***次運(yùn)行CPAN安裝例程,那么,在回答一些初始問題之后,將自動(dòng)下載并安裝適當(dāng)?shù)哪K。

可以用ptkdb調(diào)試器運(yùn)行程序,如下所示(使用我們以前的buggy.pl示例):

使用Devel::ptkdb

perl-d:ptkdbbuggy.plbuggy.pl

要閱讀Devel::ptkdb模塊的文檔,請(qǐng)使用命令"perldocDevel::ptkdb"。我們?cè)诒疚闹惺褂冒姹?.1071。

以上是“Perl語(yǔ)言中Perl如何調(diào)試”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI