Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]12643[/thread]

Perldebugger: Spezialvariablen bei Fehler resettet

Leser: 1


<< |< 1 2 >| >> 11 Einträge, 2 Seiten
LanX-
 2008-10-16 05:36
#115561 #115561
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
Hi

wenn ich den Perldebugger als Shell nutze setze ich gerne mal $\ und $, auf neue Werte zwecks Vereinfachung der Ausgabe.

Leider werden diese Spezialvariablen wohl zurückgesetzt sobald ein Fehler auftritt.

Irgendjemand ne Idee wie ich das umgehen kann?

Dank!
Rolf
MatthiasW
 2008-10-16 18:23
#115578 #115578
User since
2008-01-27
367 Artikel
BenutzerIn
[default_avatar]
Kannst du bitte mal ein möglichst kurzes Testscript posten, bei dem dieses Verhalten auftritt?

Ansonsten:
Wann/Wie setzt du die Spezialvariablen?
Nach welchem Fehler werden diese Variablen zurückgesetzt?

Konnte es bei mir mit einem eval{die} bsw. nicht nachvollziehen.

MfG
perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'
LanX-
 2008-10-16 18:52
#115579 #115579
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
Hi

Du ich dachte es wäre straightforward erklärt
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
lanx@xubuntu:~$ perl -de0

Loading DB routines from perl5db.pl version 1.28
Editor support available.

Enter h or `h h' for help, or `man perldebug' for more help.

main::(-e:1):   0
DB<1> $\="XXX"

DB<2> print
XXX
DB<3> print 5/0
Illegal division by zero at (eval 12)[/usr/share/perl/5.8/perl5db.pl:628] line 2.
 at (eval 12)[/usr/share/perl/5.8/perl5db.pl:628] line 2
        eval '($@, $!, $^E, $,, $/, $\\, $^W) = @saved;package main; $^D = $^D | $DB::db_stop;
print 5/0;

;' called at /usr/share/perl/5.8/perl5db.pl line 628
        DB::eval called at /usr/share/perl/5.8/perl5db.pl line 3410
        DB::DB called at -e line 1

DB<4> print

DB<5> 


die Meldung eval '($@, $!, $^E, $,, $/, $\\, $^W) = @saved; hab ich wohl gesehen, verstehen tu ich sie leider nicht.

Auch sonstige Einstellungen wie precommands mit '<' gehen verloren. IMHO kann das nicht umsonst gewollt sein...

Danke für die Hilfe
Rolf

NACHTRAG: Wenns wundert, ich nutze hier den Debugger als Perl-Shell (mangels Alternative)!
MatthiasW
 2008-10-16 19:14
#115580 #115580
User since
2008-01-27
367 Artikel
BenutzerIn
[default_avatar]
Bei genau der selben Eingabe bekomme ich:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
C:\Users\Matthias>perl -de0

Loading DB routines from perl5db.pl version 1.3
Editor support available.

Enter h or `h h' for help, or `perldoc perldebug' for more help.

main::(-e:1): 0

DB<1> $\="XXX"


DB<2> print
XXX

DB<3> print 5/0
Illegal division by zero at (eval 14)[C:/Perl/lib/perl5db.pl:638] line 2.


DB<4> print
XXX

DB<5>

Allerdings hast du auch perl5db.pl in der Version 1.28 und ich in der 1.3er.

Keine Ahnung obs geht, aber versuch doch mal im -e die Spezialvariable zu setzen, dann bei Start des Debuggers einmal 'n' eingeben um -e zu verarbeiten, und danach nochmal die print()-Statements.

Oder du holst dir die neuste Version von perl5db.pl ;)

MfG
perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'
LanX-
 2008-10-16 19:47
#115584 #115584
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
MatthiasW+2008-10-16 17:14:13--
Bei genau der selben Eingabe bekomme ich:
...
Allerdings hast du auch perl5db.pl in der Version 1.28 und ich in der 1.3er.


faszinierend!

MatthiasW+2008-10-16 17:14:13--
Keine Ahnung obs geht, aber versuch doch mal im -e die Spezialvariable zu setzen, dann bei Start des Debuggers einmal 'n' eingeben um -e zu verarbeiten, und danach nochmal die print()-Statements.


nach dem ersten "n" gehts zwar, aber nach dem Fehler lässt es sich nicht zurückholen, auch nicht mit "R".

der einzige Workaround bisher ist es in die erste Zeile zu schreiben und mit !1 es wieder ausführen zu lassen

Ziel ist es ja auch ne Shell zu haben und nicht jedesmal den Debugger neu starten zu müssen...

MatthiasW+2008-10-16 17:14:13--
Oder du holst dir die neuste Version von perl5db.pl ;)


hmm, ich teste erst mal noch was meine Windowsinstallation macht (so wie du). Glaube schon mal beobachtet zu haben dass sich da manches anders verhält... z.B. die History.

Bei CPAN bekomme ich perl5db.pl nur für perl5.10 angezeigt.... kann ich das gefahrlos nutzen?

Zumindest steht hier endlich was über @saved, eventuell kann man das verhalten ja steuern.

Vielen Dank Matthias!
MatthiasW
 2008-10-16 20:10
#115587 #115587
User since
2008-01-27
367 Artikel
BenutzerIn
[default_avatar]
Ich nehme mal an, dass du perl5.8.8 besitzt: http://search.cpan.org/src/NWCLARK/perl-5.8.8/lib/perl5db.pl

MfG
perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'
Gast Gast
 2008-10-17 00:54
#115593 #115593
MatthiasW+2008-10-16 18:10:54--
Ich nehme mal an, dass du perl5.8.8 besitzt: http://search.cpan.org/src/NWCLARK/perl-5.8.8/lib/perl5db.pl


ja tue ich, aber Link bringt doch nix:

$VERSION = 1.28;

Kann bitte jmd mit Perl 5.8.8 und perl5db.pl 1.28 es mal bei sich gegenchecken ob er das gleiche Problem hat?
LanX-
 2008-10-17 01:06
#115594 #115594
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
The previous unsigned message came from user LanX-

Nachtrag: Unter Windows funzt es, allerdings in der Kombi 5.10/1.3 ...

Ich hege den Verdacht dass man das verhalten in irgendeiner Datei konfigurieren können müsste.
pq
 2008-10-17 12:18
#115596 #115596
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
ich hab dasselbe problem unter 5.8.8 mit version 1.28 (linux)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
LanX-
 2008-10-18 02:02
#115615 #115615
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
Crossposting: http://perlmonks.org/index.pl?node_id=717859

EDIT: gibts bei perlmonks eigentlich ne Mailbenachrichtigung?
EDIT2: ... scheinbar nicht!
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2008-10-16 05:36.