debug per eval

Hallo NG,

kann man Debugkommandos auch per eval absetzen?


>: perl -d yxz.pl

>: DB<1> r


---------------


yxz.pl:


while(1)
{
....
eval(<>);
}

-------------

Ich starte im debug-Modus, per run lasse ich das Programm laufen.

Wenn irgendwas Debuggenswertes passiert, wünschte ich mir per eval z.B.
die Breakpoints setzen zu können.


Frank
f.ballandt [ Fr, 16 Juni 2006 11:15 ] [ ID #1358674 ]

Re: debug per eval

Hallo Frank,

<f.ballandt [at] baumueller-kamenz.de> schrieb im Newsbeitrag
news:e6tsra$hna$1 [at] news.albasani.net...
>
> kann man Debugkommandos auch per eval absetzen?
> ..........
> Ich starte im debug-Modus, per run lasse ich das Programm laufen.
>
> Wenn irgendwas Debuggenswertes passiert, wünschte ich mir per eval z.B.
> die Breakpoints setzen zu können.
>

Das habe ich selbst noch nicht gemacht. So wie ich das Kamel-Buch verstehe,
kannst du durch Setzen von $DB::single oder $DB::signal die Kontrolle an den
Debugger geben. $DB::single = 1; scheint so zu wirken, als ob an dieser
Stelle im Programm ein Breakpoint gesetzt ist.

HTH

Klaus
KWittrock [ So, 18 Juni 2006 18:18 ] [ ID #1360349 ]

Re: debug per eval

Frank:

> kann man Debugkommandos auch per eval absetzen?

Die Frage verstehe ich nicht. Was genau möchtest du machen?

> Ich starte im debug-Modus, per run lasse ich das Programm laufen.
>
> Wenn irgendwas Debuggenswertes passiert, wünschte ich mir per eval z.B.
> die Breakpoints setzen zu können.

Was ist für dich "debuggenswert"?

Du kannst jederzeit mit

$DB::single = 1;

das Skript an dieser Stelle stoppen und dem Debugger die Kontrolle
übergeben (es muss aber natürlich trotzdem mit "-d" gestartet worden sein).

Man kann auch von einem Programm aus Debugger-Befehle "eingeben",
die beim nächsten Stopp abgearbeitet werden. So weist zB.:

push [at] DB::typeahead,'x $test','c';
$DB::single = 1;

deb Debugger an, an dieser Stelle das Programm anzuhalten, den Wert
von $test auszugeben, und mit der Ausführung danach fortzufahren. Auf
dieselbe Art kann man natürlich Breakpoints setzen u.a.m. Ein Block in

perldoc perldebug

sollte weiterhelfen.

LG, Ferry

--
Ing. Ferry Bolhar
Municipality of Vienna, Department 14
A-1010 Vienna / AUSTRIA
E-mail: bol [at] adv.magwien.gv.at
Ferry Bolhar [ Mo, 19 Juni 2006 10:22 ] [ ID #1361731 ]

Re: debug per eval

>
>> kann man Debugkommandos auch per eval absetzen?
>
> Die Frage verstehe ich nicht. Was genau möchtest du machen?

Suchen nach etwas böseren (stochastisch auftretenden) Fehlern.

Öfters schon hatte ich das Problem, daß gewisse sub's (manchmal) nicht
richtig
ausgeführt worden sind. Dann landet das Programm wieder in der
Hauptschleife.
Wenn ich jetzt vorm nächsten Schleifendurchlauf die Brakepoints
aktiviere, finde ich vielleicht das Problem.



>
> Was ist für dich "debuggenswert"?

abgebrochene sub's
>
> Du kannst jederzeit mit
>
> $DB::single = 1;
>
> das Skript an dieser Stelle stoppen und dem Debugger die Kontrolle
> übergeben (es muss aber natürlich trotzdem mit "-d" gestartet worden sein).

danke, das ist das gesuchte.

Das Programm bleibt dann aber ein einigen Stellen mehr stehen mit
ungewohnten Meldungen wie:

void context return from main::sub1:

oder:

scalar context return from main::sub2:


Frank
f.ballandt [ Mo, 19 Juni 2006 16:03 ] [ ID #1361735 ]
Perl » de.comp.lang.perl.misc » debug per eval

Vorheriges Thema: Unicode Emails vom Server als HTML files sichern oder so aehnlich..
Nächstes Thema: Tk Toplevel() - Window , Position beeinflussbar?