Sebelumnya kita membahas dasar-dasar cara menulis dan menjalankan program perl menggunakan Perl Hello World Contoh.
Dalam artikel ini, Mari kita tinjau cara men-debug program/skrip perl menggunakan Perl debugger , yang mirip dengan alat gdb untuk men-debug kode C.
Untuk men-debug program perl, aktifkan debugger perl menggunakan “perl -d” seperti yang ditunjukkan di bawah ini.
# perl -d ./perl_debugger.pl
Untuk memahami perintah perl debugger secara detail, mari kita buat contoh program perl berikut (perl_debugger.pl).
$ cat perl_debugger.pl
#!/usr/bin/perl -w
# Script to list out the filenames (in the pwd) that contains specific pattern.
#Enabling slurp mode
$/=undef;
# Function : get_pattern
# Description : to get the pattern to be matched in files.
sub get_pattern
{
my $pattern;
print "Enter search string: ";
chomp ($pattern = <> );
return $pattern;
}
# Function : find_files
# Description : to get list of filenames that contains the input pattern.
sub find_files
{
my $pattern = shift;
my (@files,@list,$file);
# using glob, obtaining the filenames,
@files = <./*>;
# taking out the filenames that contains pattern.
@list = grep {
$file = $_;
open $FH,"$file";
@lines = <$FH>;
$count = grep { /$pattern/ } @lines;
$file if($count);
} @files;
return @list;
}
# to obtain the pattern from STDIN
$pattern = get_pattern();
# to find-out the list of filenames which has the input pattern.
@list = find_files($pattern);
print join "\n",@list;
1. Masukkan Perl Debugger
# perl -d ./perl_debugger.pl
itu meminta,
DB<1>
2. Lihat baris tertentu atau pernyataan subrutin menggunakan (l)
DB<1> l 10
10:$pattern saya;
DB<2> l get_pattern
11 {
12:my $pattern;
13:print “Masukkan string pencarian:“;
14:chomp ($pattern =);
15:mengembalikan $pattern;
16 }
3. Atur breakpoint pada fungsi get_pattern menggunakan (b)
DB<3> b find_files
4. Atur breakpoint pada baris tertentu menggunakan (b)
DB<4> b 44
5. Lihat breakpoint menggunakan (L)
DB<5> L
./perl_debugger.pl:
22:my $pattern =shift;
break if (1)
44:print join “\n”,@ list;
break if (1)
6. eksekusi langkah demi langkah menggunakan (s dan n)
DB<5> s
main::(./perl_debugger.pl:39):$pattern =get_pattern();
DB<5> s
main::get_pattern(./perl_debugger.pl:12):
12:$pattern saya;
Opsi s dan n melakukan langkah demi langkah eksekusi setiap pernyataan. Opsi s melangkah ke dalam subrutin. Opsi n mengeksekusi subrutin dalam satu langkah (melangkahinya).
Opsi s memang melangkah ke subrutin tetapi opsi while n yang akan mengeksekusi subrutin (melangkah di atasnya).
7. Lanjutkan hingga breakpoint berikutnya (atau nomor baris, atau subrutin) menggunakan (c)
DB<5> c
Masukkan string pencarian:perl
main::find_files(./perl_debugger.pl:22):
22:my $pattern =shift;
8. Lanjutkan ke nomor baris tertentu menggunakan (c)
DB<5> c 36
main::find_files(./perl_debugger.pl:36):
36:return @list;
9. Cetak nilai dalam variabel tertentu menggunakan (p)
DB<6> p $pattern
perl
DB<7> c
main::(./perl_debugger.pl:44):print join “\n”,@list;
DB<7> c
./perl_debugger.pl
Program yang di-debug dihentikan. Gunakan q untuk keluar atau R untuk memulai ulang,
gunakan o inhibitor_exit untuk menghindari penghentian setelah program dihentikan,
h q, h R atau h o untuk mendapatkan info tambahan.
Setelah operasi lanjutan terakhir, output akan dicetak pada stdout sebagai “./perl_debugger.pl” karena cocok dengan pola “perl”.
10. Dapatkan perintah debug dari file (sumber)
Debugger Perl bisa mendapatkan perintah debug dari file dan menjalankannya. Misalnya, buat file bernama “debug_cmds” dengan perintah perl debug sebagai,
c
p $pola
q
Perhatikan bahwa R digunakan untuk memulai kembali operasi (tidak perlu keluar dan memulai debugger lagi).
DB<7> R
DB<7> source debug_cmds
>> c
Enter string pencarian:perl
./perl_debugger.pl
Program yang di-debug dihentikan. Gunakan q untuk keluar atau R untuk memulai ulang,
gunakan o inhibitor_exit untuk menghindari penghentian setelah program dihentikan,
h q, h R atau h o untuk mendapatkan info tambahan.
>> p $pattern
perl
>> q
Catatan :Jika Anda relatif baru mengenal perl, lihat artikel kami sebelumnya:20 tips pemrograman perl untuk pemula.
Ringkasan perintah perl debugger
Opsi berikut dapat digunakan setelah Anda memasukkan debugger perl.
- h atau h h – untuk halaman bantuan
- c – untuk melanjutkan turun dari eksekusi saat ini hingga breakpoint sebaliknya hingga nama subrutin atau nomor baris,
- p – untuk menampilkan nilai variabel,
- b – untuk menempatkan breakpoint,
- L – untuk melihat set breakpoint,
- d – untuk menghapus breakpoint,
- s – untuk melangkah ke eksekusi baris berikutnya.
- n – untuk melangkahi eksekusi baris berikutnya, jadi jika baris berikutnya adalah panggilan subrutin, ia akan mengeksekusi subrutin tetapi tidak turun ke dalamnya untuk diperiksa.
- file sumber – untuk mengambil perintah debug dari file.
- l subname – untuk melihat pernyataan eksekusi yang tersedia dalam subrutin.
- q – untuk keluar dari mode debugger.