NAME
Quiq::Stacktrace - Generiere und visualisiere einen Stacktrace
SYNOPSIS
use
Quiq::Stacktrace;
my
$st
= Quiq::Stacktrace->new;
# generiere Stacktrace
$st
->asString,
"\n"
;
# visualisiere Stacktrace
-or-
Quiq::Stacktrace->asString,
"\n"
;
# in einem Aufruf
DESCRIPTION
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)
#!/usr/bin/env perl
use
Quiq::Stacktrace;
sub
a {
b();
}
sub
b {
c();
}
sub
c {
Quiq::Stacktrace->asString,
"\n"
;
}
a();
erzeugt die Ausgabe
main::a() [+17 ./test.pl]
main::b() [+6 ./test.pl]
main::c() [+10 ./test.pl]
Quiq::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), emacs(1) oder less(1) benutzt werden, um unmittelbar auf die entsprechende Zeile zu positionieren:
$ 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.
METHODS
Instantiierung
new() - Konstruktor
Synopsis
$st
=
$class
->new;
$st
=
$class
->new(
$i
);
Arguments
- $i (Default: 0)
-
Anzahl der Stackframes vom Ende des Stacktrace, die nicht berücksichtigt werden. Ist $i == 0 (was der Default ist), werden alle Frames berücksichtigt.
Description
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, wird der Parameter $i gesetzt.
Externe Repräsentation
asString() - Visualisiere Stacktrace-Objekt
Synopsis
$str
=
$st
->asString;
$str
=
$class
->asString(
$i
);
Arguments
- $i (Default: 0)
-
Siehe new().
Description
Visualisiere das Stacktrace-Objekt in Form einer Zeichenkette und liefere diese zurück. Aufbau der Zeichenkette siehe Abschnitt DESCRIPTION.
VERSION
1.225
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2025 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.