Einführung in den Perl Debugger (PDF) - Thomas Fahle
Einführung in den Perl Debugger (PDF) - Thomas Fahle
Einführung in den Perl Debugger (PDF) - Thomas Fahle
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Perl</strong><br />
und das Programm bis zum Haltepunkt ausführen.<br />
DB c<br />
ma<strong>in</strong>::(example.pl:5):<br />
Die skalare Variable $number <strong>in</strong>spizieren,<br />
ändern<br />
DB x \$number<br />
0 SCALAR(0x825a11c)<br />
-> 1<br />
DB $number = 42;<br />
&display($number);<br />
List Code revisited<br />
Sobald Haltepunkte oder Actions gesetzt s<strong>in</strong>d, wer<strong>den</strong> diese<br />
im Programmlist<strong>in</strong>g l durch e<strong>in</strong> b bzw. a nach der Zeilennummer<br />
gekennzeichnet.<br />
DB b display<br />
DB a 5 pr<strong>in</strong>t “A5 $number”;<br />
DB a 8 pr<strong>in</strong>t “A8 $number”;<br />
DB l 4-8<br />
4==> foreach my $number (1..2) {<br />
5:a &display($number);<br />
6 }<br />
7 sub display {<br />
8:ba my $number = shift;<br />
und das Programm bis zum nächsten Breakpo<strong>in</strong>t laufen lassen.<br />
DB c<br />
*** 42 ***<br />
ma<strong>in</strong>::(example.pl:5):<br />
&display($number);<br />
Die Änderung der Variable erfolgt nur im <strong>Debugger</strong>, der Orig<strong>in</strong>alcode<br />
muss nicht (!) geändert wer<strong>den</strong>.<br />
Actions<br />
Das Kommando a [l<strong>in</strong>e] command [condition] setzt<br />
<strong>in</strong> Zeile Nummer l<strong>in</strong>e e<strong>in</strong>e Aktion (beliebiger <strong>Perl</strong>-Code). Zusätzlich<br />
kann e<strong>in</strong>e Bed<strong>in</strong>gung (beliebiger <strong>Perl</strong>-Code) festgelegt<br />
wer<strong>den</strong>. E<strong>in</strong>e Aktion wird vor der Ausführung der Zeile<br />
ausgeführt. A [l<strong>in</strong>e|*] löscht die Action <strong>in</strong> Zeile l<strong>in</strong>e bzw.<br />
alle (*).<br />
Aktion <strong>in</strong> Zeile 5 setzen.<br />
DB a 5 pr<strong>in</strong>t “A5a $number ”; $number++;<br />
pr<strong>in</strong>t “A5b $number\n”<br />
Und das Programm e<strong>in</strong>mal durchlaufen lassen.<br />
DB c<br />
A5a 1 A5b 2<br />
*** 02 ***<br />
A5a 2 A5b 3<br />
*** 03 ***<br />
Übergabeparameter an Subrout<strong>in</strong>en lassen sich mit Actions<br />
aus @_ ermitteln.<br />
DB a 8 pr<strong>in</strong>t “Parameter $_[0]\n”<br />
DB c<br />
Parameter 1<br />
*** 01 ***<br />
Parameter 2<br />
*** 02 ***<br />
E<strong>in</strong> Haltepunkt hat Vorrang vor e<strong>in</strong>er Aktion.<br />
Variablen beobachten - Watches<br />
Das Kommando w [expr] setzt e<strong>in</strong>en Beobachter für expr<br />
(beliebiger <strong>Perl</strong>-Code), während W (expr|*a) e<strong>in</strong>en oder<br />
alle Watches löscht.<br />
DB w $number<br />
DB c<br />
Watchpo<strong>in</strong>t 0: $number changed:<br />
old value: ‘ ’<br />
new value: ‘1’<br />
ma<strong>in</strong>::(example.pl:5): &display($number);<br />
Graphische Benutzeroberflächen<br />
Als Alternative zur Kommandozeile gibt es auch e<strong>in</strong>ige graphische<br />
Benutzeroberflächen. Nachfolgend e<strong>in</strong>e kle<strong>in</strong>e Auswahl.<br />
ptkdb - Der Klassiker<br />
http://ptkdb.sourceforge.net/<br />
ddd (DataDisplay<strong>Debugger</strong>)<br />
http://www.gnu.org/software/ddd/<br />
Eclipse <strong>Perl</strong> Integration<br />
http://e-p-i-c.sourceforge.net/<br />
Komodo IDE<br />
Kommerzielles Produkt von Active-State<br />
http://activestate.com/products/komodo_ide/<br />
40