其實(shí)相比于我們寫程序,調(diào)試程序所花的時(shí)間遠(yuǎn)遠(yuǎn)比寫程序花的時(shí)間長(zhǎng)得多司恳!現(xiàn)在我覺得是時(shí)候?qū)erl調(diào)試進(jìn)行總結(jié)了碉输。
總的概括的來說:有三大調(diào)試的方法
- 直接在原文中進(jìn)行
print $var
來進(jìn)行調(diào)試跟继,查看各個(gè)變量是否符合預(yù)期的結(jié)果。 - 利用perl 自帶的調(diào)試器進(jìn)行調(diào)試.
- 在windos中有一個(gè)可視化的調(diào)試模塊
Tk
下面我介紹一下如何用perl自帶的調(diào)試器進(jìn)行調(diào)試:
如何啟動(dòng)調(diào)試
$ perl -d file
這里可以利用這個(gè)功能進(jìn)入perl的交互界面:
$ perl -de 1 # 進(jìn)入像python 和 R一樣的交互界面
重要的調(diào)試的命令
命令 | 功能 |
---|---|
h | 幫助 |
n | 下一步,不可進(jìn)入子程序 |
s | 單步,可進(jìn)入子程序 |
r | s進(jìn)入子程序之后蛙婴,按r可退出 |
p | 等同于print
|
x | 輸出你要查看的變量的值 |
V | 查看一個(gè)Package中的所有變量 |
l | 列出將要執(zhí)行的代碼, |
l x+y | 從x 行開始列出y+1行源代碼 |
lx-y | 列出從x到y(tǒng)行的源代碼 |
- | 列出當(dāng)前代碼前的源代碼 |
c x | 告訴調(diào)試器運(yùn)行到第x行后停下來 |
b x or subroutine | 在指定行或者子程序處設(shè)置斷點(diǎn) |
d | 刪除斷點(diǎn) |
D | 刪除所有斷點(diǎn) |
L | 列出所有斷點(diǎn) |
w | 設(shè)置觀察點(diǎn) |
使用技巧:
- 如果你忘了上面這些命令的含義粗井,你可以用h來查看
- 查看代碼的運(yùn)行情況用
s,n,r
,檢查變量用p,x,V
街图,檢查源程序用l,-,w
浇衬,使用斷點(diǎn)用c,b,L
,觀察變量的情況用w
- 用 x 來檢查hash 時(shí)用
x \ %hash
餐济, 這樣得到的結(jié)果比之間檢查更加友好 - 在有些情況下耘擂,你可能不希望在某些斷點(diǎn)上中斷,在而只在一些條件為真的情況下中斷絮姆。你可以在b 后面加第三個(gè)參數(shù)醉冤,例如:
b 16/Hey/
這個(gè)意思就是說當(dāng)16行運(yùn)行到 其中有一個(gè)字符串是Hey時(shí),停止下來篙悯。