GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Perl-Debugger-Tutorial:10 einfache Schritte zum Debuggen eines Perl-Programms

Zuvor haben wir die Grundlagen zum Schreiben und Ausführen eines Perl-Programms mit dem Perl-Hello-World-Beispiel besprochen.

Lassen Sie uns in diesem Artikel besprechen, wie man ein Perl-Programm / -Skript debuggt mit dem Perl-Debugger , das dem gdb-Tool zum Debuggen von C-Code ähnelt.

Um ein Perl-Programm zu debuggen, rufen Sie den Perl-Debugger mit „perl -d“ wie unten gezeigt auf.

# perl -d  ./perl_debugger.pl

Um die Perl-Debugger-Befehle im Detail zu verstehen, erstellen wir das folgende Perl-Beispielprogramm (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. Geben Sie den Perl-Debugger

ein

# perl -d ./perl_debugger.pl

es fordert auf,
DB<1>

2. Mit (l)

können Sie bestimmte Zeilen oder Subroutinenanweisungen anzeigen

DB<1> l 10
10:mein $muster;

DB<2> l get_pattern
11 {
12:my $pattern;
13:print „Enter search string:“;
14:chomp ($pattern =);
15:$Muster zurückgeben;
16 }

3. Setzen Sie den Haltepunkt für die get_pattern-Funktion mit (b)

DB<3> b find_files

4. Setzen Sie den Breakpoint auf eine bestimmte Zeile mit (b)

DB<4> b 44

5. Zeigen Sie die Haltepunkte mit (L)

an

DB<5> L
./perl_debugger.pl:
22:my $pattern =shift;
break if (1)
44:print join „\n“,@ list;
break if (1)

6. schrittweise Ausführung mit (s und n)

DB<5> s
main::(./perl_debugger.pl:39):$pattern =get_pattern();

DB<5> s
main::get_pattern(./perl_debugger.pl:12):
12:my $pattern;

Option s und n führt die schrittweise Ausführung der einzelnen Anweisungen aus. Option s springt in die Subroutine. Option n führt das Unterprogramm in einem einzigen Schritt aus (Übergehen).

Die s-Option springt in die Unterroutine, während die n-Option die Unterroutine ausführt (sie überspringt).

7. Fortfahren bis zum nächsten Haltepunkt (oder Zeilennummer oder Unterprogramm) mit (c)

DB<5> c
Suchbegriff eingeben:perl
main::find_files(./perl_debugger.pl:22):
22:my $pattern =shift;

8. Fahren Sie mit (c)

bis zur jeweiligen Zeilennummer fort

DB<5> c 36
main::find_files(./perl_debugger.pl:36):
36:return @list;

9. Drucken Sie den Wert in der spezifischen Variablen mit (p)

DB<6> p $pattern
perl

DB<7> c
main::(./perl_debugger.pl:44):print join „\n“,@list;
DB<7> c
./perl_debugger.pl
Debuggtes Programm beendet. Verwenden Sie q zum Beenden oder R zum Neustarten,
verwenden Sie ohibit_exit, um ein Stoppen nach dem Beenden des Programms zu vermeiden,
h q, h R oder h o, um zusätzliche Informationen zu erhalten.

Nach der letzten Continue-Operation wird die Ausgabe auf der Standardausgabe als „./perl_debugger.pl“ ausgegeben, da sie dem Muster „perl“ entspricht.

10. Holen Sie sich Debug-Befehle aus der Datei (Quelle)

Der Perl-Debugger kann den Debug-Befehl aus der Datei abrufen und ausführen. Erstellen Sie beispielsweise die Datei „debug_cmds“ mit den Perl-Debug-Befehlen als,

c
p $Muster
q

Beachten Sie, dass R verwendet wird, um die Operation neu zu starten (Sie müssen den Debugger nicht beenden und erneut starten).
DB<7> R
DB<7> source debug_cmds
>> c
Enter Suchstring:perl
./perl_debugger.pl
Debuggtes Programm beendet. Verwenden Sie q zum Beenden oder R zum Neustarten,
verwenden Sie ohibit_exit, um ein Stoppen nach dem Beenden des Programms zu vermeiden,
h q, h R oder h o, um zusätzliche Informationen zu erhalten.
>> p $pattern
perl
>> q

Hinweis :Wenn Perl für Sie relativ neu ist, lesen Sie unseren vorherigen Artikel:20 Perl-Programmiertipps für Anfänger.

Zusammenfassung der Perl-Debugger-Befehle

Die folgenden Optionen können verwendet werden, sobald Sie den Perl-Debugger aufgerufen haben.

  • h oder h h – für Hilfeseite
  • c – um von der aktuellen Ausführung bis zum Haltepunkt fortzufahren, andernfalls bis zum Unterprogrammnamen oder der Zeilennummer,
  • p – um die Werte von Variablen anzuzeigen,
  • b – um die Breakpoints zu setzen,
  • L – um die gesetzten Breakpoints zu sehen,
  • d – um die Breakpoints zu löschen,
  • s – um in die nächste Zeilenausführung zu springen.
  • n – um die Ausführung der nächsten Zeile zu überspringen, wenn also die nächste Zeile ein Unterroutinenaufruf ist, würde sie die Unterroutine ausführen, aber nicht zur Inspektion hineingehen.
  • Quelldatei – um die Debug-Befehle aus der Datei zu übernehmen.
  • l subname – um die Ausführungsanweisungen zu sehen, die in einer Subroutine verfügbar sind.
  • q – um den Debugger-Modus zu verlassen.

Linux
  1. Ein einfaches Bash-Vervollständigungs-Tutorial?

  2. TYPO3 Enterprise CMS auf einem ISPConfig-Server in 10 einfachen Schritten

  3. Joomla CMS auf einem ISPConfig-Server in 10 einfachen Schritten

  4. Drupal CMS auf einem ISPConfig-Server in 10 einfachen Schritten

  5. Perl Hello World Beispiel:Wie man ein Perl-Programm unter Unix OS schreibt und ausführt

Ein praktisches Tutorial zur Verwendung des GNU Project Debuggers

So installieren Sie Microsoft Edge unter Linux in wenigen einfachen Schritten

So installieren Sie Elasticsearch unter Ubuntu 20.04 LTS – Einfache Schritte

4 einfache Schritte zum Installieren und Konfigurieren von VMware Server 2 unter Linux

So installieren Sie Ubuntu Touch auf einem Android-Gerät:Ein einfaches Tutorial für Neulinge

Wie man Spiele unter Linux spielt | Einfaches Tutorial für Neulinge