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.