Hi Peter! On Monday 14 May 2007, Peter Gordon wrote: > If you have a look it dumpvar.pl, you will find my name there. Once upon > a time, during the birth pangs of Perl 5, I did bang my head against > it. > > I agree with you that the debugger is a Real Mess (tm) and hopefully in > Perl 6 it will be a lot nicer.
Wait for Perl 6 which will be a whole new ball game just for a better debugger? Get real. At the moment, as far as I know, Pugs and Parrot don't have any debuggers at all. It is possible to write a better debugger for perl 5 see Devel::ebug for instance: http://search.cpan.org/dist/Devel-ebug/ And you can always refactor the existing debugger into shape if the need arises. Regards, Shlomi Fish > > Another way would be make an opaque object so that the values don't get > dumped down. > > Peter > > On Mon, 2007-05-14 at 09:30 +0300, Gaal Yahas wrote: > > I disagree on both counts. :-) > > > > Simplicity isn't one of the best descriptions of the debugger code. > > (By which I mean > > the actual debugger, perl5db.pl.) I mean sure, you could tweak around > > lines: 2434 > > 654 > > 5547 > > > > But you'd still have to bang your head against dumpvar.pl. > > > > And how to make the interface for it? Just hardcode some arbitrary > > limit? Yet another config option? What happens when your members are > > actually tied scalars that when read do some expensive operation like > > compute a value or read from the network? Maybe you want to skip those > > fields too... How? > > > > If what guides you is a sense that debuggability features don't seem > > clean to leave in production code, I hear you, but consider that they > > would be implemented in a separate unit of modularity (a Role, in the > > case of Perl 6) and have declarative, thus uncluttering, > > configuration. Incidentally, in Perl 6 Roles can be composed at > > runtime, so your production program has absolutely no trace of this > > filterable dumpage, until you drop into the debugger and add it to a > > particular instance. Then you also have a consistent interface to mess > > around with its properties. > > > > On 5/14/07, Peter Gordon <[EMAIL PROTECTED]> wrote: > > > It might be simpler and more consistent to add an option to the > > > debugger itself. > > > > > > On Sun, 2007-05-13 at 21:50 +0300, Gaal Yahas wrote: > > > > On 5/13/07, Peter Gordon <[EMAIL PROTECTED]> wrote: > > > > > On this occasion, one of the elements is a string a few megabytes > > > > > long, and I don't really want to dump the whole string. > > > > > > > > > > What would be the nicest way to suppress printing of this > > > > > particular element. > > > > > > > > > > I could print each element in turn, but that is inelegant. > > > > > > > > I'm afraid I don't have an elegant solution to offer. (A related > > > > problem that does > > > > have debugger support is deeply recursive structures. Saying "x 3 > > > > $that" limits to > > > > depth 3 print.) > > > > > > > > What you might do -- and I'm not saying this is significantly > > > > different from printing each element in turn -- is add a to_debug > > > > method to the object. This copies the object but only leaves a digest > > > > version of the long string, say with the first 100 characters. > > > > > > > > Not that I've searched CPAN for prior art, but you might want to make > > > > this into a reusable module. (With Moose.pm or Perl 6, it would more > > > > properly be a Role.) Something like: > > > > > > > > package MyModuleWithLongMember; > > > > > > > > use Debug::Dump::Digest qw(long_memb1 huge_memb2); > > > > > > > > And then in the debugger: > > > > > > > > x $self->to_debug; > > > > > > _______________________________________________ > > > Perl mailing list > > > [email protected] > > > http://perl.org.il/mailman/listinfo/perl > > _______________________________________________ > Perl mailing list > [email protected] > http://perl.org.il/mailman/listinfo/perl -- --------------------------------------------------------------------- Shlomi Fish [EMAIL PROTECTED] Homepage: http://www.shlomifish.org/ If it's not in my E-mail it doesn't happen. And if my E-mail is saying one thing, and everything else says something else - E-mail will conquer. -- An Israeli Linuxer _______________________________________________ Perl mailing list [email protected] http://perl.org.il/mailman/listinfo/perl
