[m-dev.] for review: nicer stack dumps

Tyson Dowd trd at stimpy.cs.mu.oz.au
Wed Apr 22 10:14:51 AEST 1998

On 21-Apr-1998, Zoltan Somogyi <zs at cs.mu.OZ.AU> wrote:
> > +		        fprintf(stderr, "\t%s:%s/%ld (mode %ld, %s)\n",
> > +				entry_layout->MR_sle_def_module,
> > +				entry_layout->MR_sle_name,
> > +				(long) entry_layout->MR_sle_arity,
> > +		                (long) entry_layout->MR_sle_mode,
> > +				detism_names[entry_layout->MR_sle_detism]);
> This is fine as long as we are not too worried about what we print for
> automatically generated procedures. (The same goes for similar code
> in the tracer.)

Well, I'm not.  Strictly speaking, we should run this string through the
demangler too, but I'm not too worried about that yet either.

> The rest of the diff looks OK.
> There are two further changes related to this, but they can be in
> separate checkins. One is to fill in the label name field of the
> label table with a NULL unless profiling is defined. This will cut
> down executable sizes significantly. The other is to give to this

Yep, will do that soon.

> stack dump utility the capability of the one in mercury_memory.c,
> i.e. compression of the stack dump via run-length encoding.
> I want to add a command to the debugger that will print the stack dump,
> but don't want to annoy people by printing
> 	list:member/2 (mode 1, semidet)
> 2000 times instead of printing
> 	2000 * list:member/2 (mode 1, semidet)
> just once. (This is a real situation.) Actually, it would be even better
> if we recognized cycles of length > 1, up to a configurable limit, since
> sometimes a deep recursion involves two or more procedures (I recall that
> the parser has such code).

It's officially on the wish list.

       Tyson Dowd           # So I asked Sarah: what's the serial number on
                            # your computer? She replied:
     trd at cs.mu.oz.au        #          A-C-2-4-0-V-/-5-0-H-Z
http://www.cs.mu.oz.au/~trd #

More information about the developers mailing list