comp.lang.ada
 help / color / mirror / Atom feed
From: bobduff@world.std.com (Robert A Duff)
Subject: Re: Elaboration order
Date: 1996/03/26
Date: 1996-03-26T00:00:00+00:00	[thread overview]
Message-ID: <Dow1nF.7Hs@world.std.com> (raw)
In-Reply-To: 4xspevde88.fsf@leibniz.enst-bretagne.fr

In article <4xspevde88.fsf@leibniz.enst-bretagne.fr>,
Laurent Guerby <Laurent.Guerby@enst-bretagne.fr> wrote:
>   Here is a simple solution to this kind of problem :
>
>package Pure_IO is
>   pragma Pure;
>
>   procedure Debug (Msg : in String);
>   pragma Import (C, Debug);
>
>end Pure_IO;
>
>   Then do the dirty work  (body) in Ada (convention C)  or C.

Excellent idea!  Thanks.

Does it really work?  I mean you're sort of cheating here.  You've
declared that the thing is Pure, but you've lied.  So the optimizer
might play nasty tricks, like eliminating calls to Debug, if the only
effect of Debug is its "side effect".

I guess it's OK to cheat like that, since it's "merely" debugging code.
But one has to be careful, in case one's optimizer is smarter that one
is ;-).

>... I don't
>know if there's a pragma Import (Ada,  xxx). GNAT seems to compile it,
>I haven't checked if Import (C, xxx) is legal in a Pure unit.

Import(Ada) should work.

>: Gdb is not quite up to the point where I can use it all the time instead
>: of debugging print-outs.  (Of course, reading one's code is usually a
>: better way of tracking down bugs, but not always.)
>
>   It's true that the current GDB-GNAT has some weakpoints, but if you
>add to your code (instead of plenty ugly "with Text_IO; Put_Line ...")
>some "extra" procedures to set up complex data structures and to print
>them (just like in the GNAT code anyway) it works quite well

Yes, I do add all kinds of printing routines, and call them from gdb
when necessary.  My version of gdb, which might not be the latest,
doesn't even know how to print strings.  It prints a pair of addresses,
instead of the characters of the string.

>... (even for
>multiple  partitions or  multiple  tasks   if you   know what   you're
>doing). BTW  report GDB problems according  to the  README file coming
>with the GDB patch, this will help improving it.

I suppose I should be a good citizen and do that.  But reporting
debugger bugs is even more difficult than reporting compiler bugs.
Bleah.  And sometimes I'm not really sure it's a debugger bug.  For
example, I recently noticed gdb printed "false" for some Boolean
components of a packed record, but my print-out routine seemed to think
they were True, and I wasn't quite sure if the bug was in gdb, or my
program, or my print-out routines.  In that particular case, I wasn't
willing to spend hours tracking it down, once I found the "real" bug I
was looking for.

Thanks for the help.

- Bob




  reply	other threads:[~1996-03-26  0:00 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <314701A1.469D@lfwc.lockheed.com>
     [not found] ` <1996Mar14.021345.9856@enterprise.rdd.lmsc.lockheed.com>
     [not found]   ` <314829CD.4FA9@lfwc.lockheed.com>
1996-03-15  0:00     ` Elaboration order Tucker Taft
1996-03-15  0:00       ` Ken Garlington
1996-03-16  0:00     ` Ted Dennison
1996-03-16  0:00     ` Joe Wierzbowski
1996-03-26  0:00       ` AdaWorks
1996-03-26  0:00         ` Robert Dewar
1996-03-26  0:00           ` IO in Pure packages, debugging Laurent Guerby
1996-03-26  0:00           ` Elaboration order Robert A Duff
1996-03-26  0:00             ` Robert Dewar
1996-03-26  0:00         ` Robert A Duff
1996-03-26  0:00     ` Laurent Guerby
1996-03-26  0:00       ` Robert A Duff [this message]
1996-03-15  0:00 ` Robert I. Eachus
1996-03-15  0:00   ` Robert Dewar
1996-03-18  0:00 ` Ted Dennison
1996-03-18  0:00 ` Ken Garlington
1996-03-19  0:00 ` Michel Gauthier
1996-03-20  0:00 ` DenReimer
1996-03-20  0:00   ` Tucker Taft
1996-03-20  0:00   ` Norman H. Cohen
1996-03-20  0:00   ` Robert A Duff
1996-03-20  0:00     ` Norman H. Cohen
1996-03-20  0:00       ` Robert Dewar
     [not found] ` <Do8JDv.A2v@world.std.com>
     [not found]   ` <31494143.3825@lfwc.lockheed.com>
1996-03-15  0:00     ` Robert A Duff
1996-03-18  0:00       ` Norman H. Cohen
     [not found]       ` <EACHUS.96Mar18143219@spectre.mitre.org>
1996-03-18  0:00         ` Robert Dewar
1996-03-19  0:00           ` Ted Dennison
1996-03-18  0:00         ` Robert Dewar
1996-03-20  0:00         ` David Emery
1996-03-15  0:00     ` Mark A Biggar
1996-03-18  0:00       ` Ken Garlington
1996-03-19  0:00         ` Chris McKnight
1996-03-21  0:00           ` Ken Garlington
1996-03-19  0:00         ` Norman H. Cohen
1996-03-20  0:00           ` Cordes MJ
1996-03-19  0:00             ` Robert Dewar
1996-03-21  0:00               ` Ken Garlington
1996-03-21  0:00               ` Cordes MJ
1996-03-20  0:00             ` Robert A Duff
1996-03-20  0:00               ` Cordes MJ
1996-03-20  0:00                 ` Robert A Duff
1996-03-22  0:00                   ` Cordes MJ
1996-03-20  0:00                 ` Robert Dewar
1996-03-21  0:00                   ` Ken Garlington
1996-03-23  0:00                 ` JP Thornley
1996-03-25  0:00                   ` Robert Dewar
1996-03-26  0:00                 ` JP Thornley
1996-03-20  0:00   ` Robert I. Eachus
1996-03-22  0:00   ` Robert I. Eachus
1996-03-22  0:00   ` Robert I. Eachus
1999-11-15  0:00 Elaboration Order Wolf-Dieter Heker
1999-11-15  0:00 ` Robert Dewar
1999-11-16  0:00   ` Wolf-Dieter Heker
1999-11-16  0:00     ` David C. Hoos, Sr.
1999-11-16  0:00     ` Robert Dewar
1999-11-20  0:00       ` Simon Wright
1999-11-22  0:00         ` Robert Dewar
1999-11-23  0:00           ` Mats Weber
1999-11-16  0:00     ` Robert Dewar
1999-11-15  0:00 ` Jean-Pierre Rosen
1999-11-15  0:00   ` Robert Dewar
1999-11-16  0:00     ` Jean-Pierre Rosen
1999-11-20  0:00       ` Simon Wright
     [not found] <DoDMLL.1F9@world.std.com>
1996-03-18  0:00 ` Elaboration order Chris McKnight
  -- strict thread matches above, loose matches on Subject: below --
1996-03-18  0:00 Jean-Pierre Rosen
1996-03-21  0:00 ` Ken Garlington
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox