GNU/Linux >> Belajar Linux >  >> Linux

Tutorial Debugger Perl:10 Langkah Mudah untuk Debug Program Perl

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.

Linux
  1. Cara Menginstal Microsoft Edge di Linux dalam Beberapa Langkah Mudah

  2. Tutorial Penyelesaian Bash yang Mudah??

  3. Cacti Di Server ISPConfig Dalam 10 Langkah Mudah

  1. IlohaMail Di Server ISPConfig Anda Dalam 10 Langkah Mudah

  2. TYPO3 Enterprise CMS Pada Server ISPConfig Dalam 10 Langkah Mudah

  3. CMS Joomla Pada Server ISPConfig Dalam 10 Langkah Mudah

  1. CMS Drupal Pada Server ISPConfig Dalam 10 Langkah Mudah

  2. Cara Debug Program C menggunakan gdb dalam 6 Langkah Sederhana

  3. 7 Contoh Strace untuk Debug Eksekusi Program di Linux