如何在本機調試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 退出調試程序
######################
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 退出調試程序