debug per eval
am 16.06.2006 11:15:20 von f.ballandt
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
Re: debug per eval
am 18.06.2006 18:18:50 von KWittrock
Hallo Frank,
schrieb im Newsbeitrag
news:e6tsra$hna$1@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
Re: debug per eval
am 19.06.2006 10:22:10 von Ferry Bolhar
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 @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@adv.magwien.gv.at
Re: debug per eval
am 19.06.2006 16:03:26 von f.ballandt
>
>> 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