top
Loading...
如何在本機調試perl程序
例子腳本test.pl
######################
test.pl
#!usr/bin/perl -w
print "Hello World...n"
######################

啟動調試程序
c:>perl -d 文件名
例如: perl -d test.pl

如果你的腳本的語法或函數拼寫沒有錯誤的話就直接顯示
Loading DB routines from perl5db.pl version 1.0401   #(你的版本號可能不一樣)
Emacs support available.
Enter h or `h h` for help.
main::(文件名:1):  ...............    #顯示該腳本的第一行可執行代碼
DB<1>_   #表示在等待他的第一個命令

請在你的程序頭加入
#!usr/bin/perl -w  #-w表示打開perl的警告特性,如果你的perl路徑已經確定,請在路徑后鍵入-w
如果你的腳本的語法或函數拼寫有錯誤的話,你仔細看他的錯誤顯示,你將會看到
syntax eror at test.pl line 2,near "prin "Hello, World ...n""  #這里因為print函數拼錯,所以顯示錯誤發生在第2行,把prin改為print就可以通過了
Execution of test.pl aborted due to compilation errors.      

對于由于其他原因產生的變量值的差異就需要用print命令了
你可以隨時在調試程序提示符下運行print 變量名
#例如:test2.pl
#!usr/bin/perl -w
#$countbegin =9;
#$countend =17;
#$test=0;
#$backup=0;
#open (OLD,"hot-download.html")||die $!;
#@line=<OLD>;
#close (OLD);
#open (NEW,">hot-download.html")||die $!;
#while ($test <=7){
# print NEW @line[$test];
# $test++;
#}
#@line[17]=@line[16];
#@line[16]=@line[15];
#@line[15]=@line[14];
#@line[14]=@line[13];
#@line[13]=@line[12];
#@line[12]=@line[11];
#@line[11]=@line[10];
#@line[10]=@line[9];
#@line[9]=@line[8];
#@line[8]=document; ##########????????
#while ($test <=18){
# print NEW @line[$test];
# $test++;
#}
#close(NEW);
#
##########運行調試程序后###########
main::(test2.pl:1):  $countbegin =9;
DB<1>n
main::(test2.pl:2):  $countend =17;
DB<1>print $countbegin
9
DB<2>_


調試程序的基本命令
n  你鍵入命令n后,perl執行當前顯示的這一行.注意:當前顯示的語句并沒有執行過,他是準備要執行的語句
<CR> 重復上面的命令,按Enter鍵
l  你鍵入命令l后,將顯示程序的下面10行,若要顯示從某一行開始的程序,鍵入l 程序的行號,要列出行的范圍的話鍵入l 開始行號-結束行號
L  顯示在程序中已經攝制的斷點
b  設定斷點,斷點可以是行號或子例程名,例如: b 2
d  撤銷程序中的斷點,斷點可以是行號或子例程名,例如: d 2
c  運行到下一個斷點或程序的結尾
R  重新啟動你的程序
s  單步執行你的程序,它可以執行函數,然后在函數的第1個指令處停止運行
   #例如:main::(test1.pl:4):       &PrintHeader;
   #   DB<11>s
   #   main::PrintHeader(test1.pl:11): print "Content-type: text/htmlnn";
   #   DB<12>_
q  退出調試程序 
北斗有巢氏 有巢氏北斗