Prty::Stacktrace - Generiere und visualisiere einen Stacktrace
use Prty::Stacktrace; my $st = Prty::Stacktrace->new; # generiere Stacktrace print $st->asString,"\n"; # visualisiere Stacktrace -or- print Prty::Stacktrace->asString,"\n"; # in einem Aufruf
Ein Objekt der Klasse repräsentiert die Aufrufhierarchie des laufenden Perl-Programms zum Zeitpunkt der Instantiierung des Stacktrace-Objektes.
Die Klasse kann zum Debuggen verwendet werden oder bei der Erzeugung von Exceptions.
Folgendes Beispielprogramm (test.pl)
1: #!/usr/bin/env perl 2: 3: use Prty::Stacktrace; 4: 5: sub a { 6: b(); 7: } 8: 9: sub b { 10: c(); 11: } 12: 13: sub c { 14: print Prty::Stacktrace->asString,"\n"; 15: } 16: 17: a();
erzeugt die Ausgabe
main::a() [+17 ./test.pl] main::b() [+6 ./test.pl] main::c() [+10 ./test.pl] Prty::Stacktrace::asString() [+14 ./test.pl]
Von oben nach unten gelesen gibt der Stacktrace die Hierarchie der Subroutine-Aufrufe (= Methoden oder Funktionsaufrufe) in der Aufrufreihenfolge wieder. Jede Zeile beschreibt einen Subroutine-Aufruf:
main::a() [+17 ./test.pl] ^ ^ ^ ^ | | | +-- Datei, in der der Aufruf steht | | +-- Zeilennummer, an der der Aufruf in der Datei steht | +-- Name der aufgerufenen Subroutine +-- Package, zu dem die Subroutine gehört
Die in eckigen Klammern genannte Quelltextposition kann bei Aufruf von vi(1) oder less(1) benutzt werden, um unmittelbar auf die entsprechende Zeile zu positionieren:
$ vi +17 ./test.pl
bzw.
$ less +17 ./test.pl
Der unterste Eintrag im Stacktrace ist der Aufruf des Konstruktors new() oder der Methode asString(), wenn sie als Klassenmethode gerufen wird. Sollen Stacktrace-Frames am Ende weggelassen werden, kann dies durch Angabe des Parameters $i erreicht werden.
$st = $class->new; $st = $class->new($i);
Anzahl der Stackframes vom Ende des Stacktrace, die nicht berücksichtigt werden. Ist $i == 0 (was der Default ist), werden alle Frames berücksichtigt.
Instantiiere ein Stacktrace-Objekt und liefere eine Referenz auf diese Objekt zurück. Das Stacktrace-Objekt repräsentiert die Aufruf-Hierarchie des laufenden Perl-Programms zum Zeitpunkt der Instantiierung. Letztes Element in der Hierarchie ist der Konstruktor-Aufruf. Soll der Stacktrace vorher enden,
$str = $st->asString; $str = $class->asString($i);
Siehe new().
Visualisiere das Stacktrace-Objekt in Form einer Zeichenkette und liefere diese zurück. Aufbau der Zeichenkette siehe Abschnitt DESCRIPTION.
1.090
Frank Seitz, http://fseitz.de/
Copyright (C) 2016 Frank Seitz
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Prty, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Prty
CPAN shell
perl -MCPAN -e shell install Prty
For more information on module installation, please visit the detailed CPAN module installation guide.