05.11.2013 Aufrufe

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

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!