comp.lang.ada
 help / color / mirror / Atom feed
* ANNOUNCE: DTraq First Public Release
@ 2003-09-01 21:57 Marc A. Criley
  2003-09-02 16:29 ` Pascal Obry
  0 siblings, 1 reply; 11+ messages in thread
From: Marc A. Criley @ 2003-09-01 21:57 UTC (permalink / raw)


McKae Technologies announces the first public release of DTraq,
version 0.960.

DTraq is a data logging and playback debugging tool providing near
realtime data logging and analysis to aid debugging and validation.
Captured, or 'tapped' data from a program can be viewed live while the
program is running or, since it is being logged to a file, played back
or printed out later for off-line review and analysis.

DTraq differs from other logging and playback tools in that no data
layout maps or byte interpretations or "data dumpers" need to be
manually created. Nor is the application responsible for converting
the raw binary data to text form before logging it.  DTraq handles all
conversion automatically by scanning the application's source code,
identifying tapped data items, and extracting the information it needs
to properly convert and display the logged items-simple scalar items
as well as arrays and records.  When the layout of data items change,
rescanning automatically picks up the changes.

The DTraq binary distribution,comprehensive documentation, and source
code is available for download at http://www.mckae.com/dtraq.html.

DTraq is currently available for Linux systems running GNAT 3.15p.

DTraq operation has been verified on both RedHat 8.0 and RedHat 9.0
Linux distributions (albeit the user needs to set an environment
variable when using the latter distribution--a README.RedHat9 file in
the distribution covers this).  Because DTraq utilizes ASIS-for-GNAT,
which is tightly bound to a corresponding compiler version (in this
case 3.15p), DTraq has currently been validated only against GNAT
3.15p.

For more information or questions, please contact marc 'at' mckae.com.

Marc A. Criley
Mckae Technologies
1 Sep 2003




^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ANNOUNCE: DTraq First Public Release
  2003-09-01 21:57 ANNOUNCE: DTraq First Public Release Marc A. Criley
@ 2003-09-02 16:29 ` Pascal Obry
  2003-09-02 17:23   ` Florian Weimer
                     ` (3 more replies)
  0 siblings, 4 replies; 11+ messages in thread
From: Pascal Obry @ 2003-09-02 16:29 UTC (permalink / raw)



"Marc A. Criley" <marc@mckae.com> writes:

> McKae Technologies announces the first public release of DTraq,
> version 0.960.
> 
> DTraq is a data logging and playback debugging tool providing near
> realtime data logging and analysis to aid debugging and validation.
> Captured, or 'tapped' data from a program can be viewed live while the
> program is running or, since it is being logged to a file, played back
> or printed out later for off-line review and analysis.

I've never used nor seen such a tool. Can you provides more information
about what it can be used for ? How can it helps debugging ?

Thanks,
Pascal.

-- 

--|------------------------------------------------------
--| Pascal Obry                           Team-Ada Member
--| 45, rue Gabriel Peri - 78114 Magny Les Hameaux FRANCE
--|------------------------------------------------------
--|         http://perso.wanadoo.fr/pascal.obry
--| "The best way to travel is by means of imagination"
--|
--| gpg --keyserver wwwkeys.pgp.net --recv-key C1082595



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ANNOUNCE: DTraq First Public Release
  2003-09-02 16:29 ` Pascal Obry
@ 2003-09-02 17:23   ` Florian Weimer
  2003-09-02 17:44     ` Pascal Obry
  2003-09-02 20:54   ` Guillaume Foliard
                     ` (2 subsequent siblings)
  3 siblings, 1 reply; 11+ messages in thread
From: Florian Weimer @ 2003-09-02 17:23 UTC (permalink / raw)


Pascal Obry <p.obry@wanadoo.fr> writes:

> I've never used nor seen such a tool. Can you provides more information
> about what it can be used for ? How can it helps debugging ?

You can review the execution history that led to the misbehavior you
are concerned with.

This is particularly useful if you are trying to track down a bug
which corrupts the stack, for example.



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ANNOUNCE: DTraq First Public Release
  2003-09-02 17:23   ` Florian Weimer
@ 2003-09-02 17:44     ` Pascal Obry
  2003-09-02 18:12       ` Florian Weimer
  0 siblings, 1 reply; 11+ messages in thread
From: Pascal Obry @ 2003-09-02 17:44 UTC (permalink / raw)



Florian Weimer <fw@deneb.enyo.de> writes:

> You can review the execution history that led to the misbehavior you
> are concerned with.

One more question then, what is recorded into the "execution history" ?
Procedure names, parameters, start time... ?

Pascal.

-- 

--|------------------------------------------------------
--| Pascal Obry                           Team-Ada Member
--| 45, rue Gabriel Peri - 78114 Magny Les Hameaux FRANCE
--|------------------------------------------------------
--|         http://perso.wanadoo.fr/pascal.obry
--| "The best way to travel is by means of imagination"
--|
--| gpg --keyserver wwwkeys.pgp.net --recv-key C1082595



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ANNOUNCE: DTraq First Public Release
  2003-09-02 17:44     ` Pascal Obry
@ 2003-09-02 18:12       ` Florian Weimer
  0 siblings, 0 replies; 11+ messages in thread
From: Florian Weimer @ 2003-09-02 18:12 UTC (permalink / raw)


Pascal Obry <p.obry@wanadoo.fr> writes:

> Florian Weimer <fw@deneb.enyo.de> writes:
>
>> You can review the execution history that led to the misbehavior you
>> are concerned with.
>
> One more question then, what is recorded into the "execution history" ?
> Procedure names, parameters, start time... ?

There are systems which track register and memory contents.

(I haven't looked at DTraq and don't know if it goes this far.  I just
wanted to stress that such tools are useful.)



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ANNOUNCE: DTraq First Public Release
  2003-09-02 16:29 ` Pascal Obry
  2003-09-02 17:23   ` Florian Weimer
@ 2003-09-02 20:54   ` Guillaume Foliard
  2003-09-03  0:00   ` Jeffrey Creem
  2003-09-03  0:50   ` Marc A. Criley
  3 siblings, 0 replies; 11+ messages in thread
From: Guillaume Foliard @ 2003-09-02 20:54 UTC (permalink / raw)


Pascal Obry wrote:
> "Marc A. Criley" <marc@mckae.com> writes:
>> DTraq is a data logging and playback debugging tool providing near
>> realtime data logging and analysis to aid debugging and validation.
>> Captured, or 'tapped' data from a program can be viewed live while the
>> program is running or, since it is being logged to a file, played back
>> or printed out later for off-line review and analysis.
> 
> I've never used nor seen such a tool. Can you provides more information
> about what it can be used for ? How can it helps debugging ?

I'm using such a tool at work, which has been developped in-house. It allows
you to record during execution data messages (effective parameters, data
going through a network connection, etc...) and to analyse them afterwards. 
The important part there is not to record the data but to interpret it
without having to type millions line of Put procedure by hand. This is a
two step process. First you need an Ada parser to analyse the data
structure of what you want to record and to generate all the Ada code
needed to access and display those structures. Then this code will be used
in other applications for displaying, plotting, etc...
From my own experience with such a tool, and with the help of a good
software design, more than 90 percent of the defects are resolved by just
reading the inputs and the outputs and the involded code, without any
debugger. This is indeed possible because of the natural safety of Ada.
When bug occur we can generally safely ignore all the low-level bugs C
programmers are familiar with to focus on the functionnal stuff.

By the way, http://www.mckae.com/dtraq.html is unreachable.



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ANNOUNCE: DTraq First Public Release
  2003-09-02 16:29 ` Pascal Obry
  2003-09-02 17:23   ` Florian Weimer
  2003-09-02 20:54   ` Guillaume Foliard
@ 2003-09-03  0:00   ` Jeffrey Creem
  2003-09-03  0:55     ` Marc A. Criley
  2003-09-03  0:50   ` Marc A. Criley
  3 siblings, 1 reply; 11+ messages in thread
From: Jeffrey Creem @ 2003-09-03  0:00 UTC (permalink / raw)



"Pascal Obry" <p.obry@wanadoo.fr> wrote in message
news:ubru3cfxa.fsf@wanadoo.fr...
>
> I've never used nor seen such a tool. Can you provides more information
> about what it can be used for ? How can it helps debugging ?
>

I have not looked a the details about what this tool provide but at a high
level I can say that this
could be really useful for "system level" debugging/analysis information.
What I mean is that in many systems, one ends
up creating some sort of data logging interface that keeps track of either
inputs to some top level module and/or
intermediate calculations to better understand how the system is operating.
Sounds like this would be a quick way
to get this information out more easily. It probably will not be as quick as
some of the hand/rolled solutions (which
dump data in a raw binary format for later offline expansion to ASCII) but
still useful in some cases.





^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ANNOUNCE: DTraq First Public Release
  2003-09-02 16:29 ` Pascal Obry
                     ` (2 preceding siblings ...)
  2003-09-03  0:00   ` Jeffrey Creem
@ 2003-09-03  0:50   ` Marc A. Criley
  2003-09-05 16:43     ` Pascal Obry
  3 siblings, 1 reply; 11+ messages in thread
From: Marc A. Criley @ 2003-09-03  0:50 UTC (permalink / raw)


Pascal Obry wrote:
> 
> I've never used nor seen such a tool. Can you provides more information
> about what it can be used for ? How can it helps debugging ?

Many projects of any significant size have some sort of "logger", a
package or class or file of logging functions.  As the program runs,
information that the developer has decided would be useful to record
for subsequent analysis or monitoring is logged.  (Actually, specific
logging requirements may also be placed on an application by its
customer, especially for military systems.)

So such loggers basically record to one or more log files the
information that is submitted to the logging service while the app
runs, along with a timestamp and perhaps other useful information.

There are two general approaches regarding the form of the logged
data: One is that the application preconverts the data to text and
then logs that text, so the application has the responsibility of
properly interpreting and formatting the data that is then logged.

The second approach is to more-or-less provide an address and a number
of bytes to the logger, and the logger then writes those raw bytes to
the log file.  This address/size combination can sometimes be dressed
up as somehow simply specifying the object to log, or utilizing a
suitably instantiated generic (which is what DTraq does).

The problem with the first approach is that text representations
usually take up more bytes than the raw data, which means added I/O or
network traffic, plus the text conversion impacts application
performance.

The problem with the second approach is that the raw bytes still have
to be converted to text at some point.  So there are a couple typical
ways of doing that: defining layout templates that are overlayed on
the data to break them up and that describe how to interpret each
piece--scalar, record component, array element, string, integer,
float, character, etc.  Another is to create a "data dumper" that
programmatically converts a data stream into text, which is then
invoked by the logging system's "viewer".  And of course whenever a
data item's format changes, the corresponding template or dumper needs
to be updated, and when there's a need to log a new type of data, a
new template/dumper has to be created.

For the basic logging part, DTraq is like most other loggers--you
identify the data item you want to log, instantiate a generic
procedure with the type of that data item, and then add invocations of
that instantiation wherever you want to "tap" the value of that item.

Something like:

    type Color_Type is (Red, Green, Blue);

    Current_Color : Color_Type := Red;

    procedure Tap_Color is new DTraq.Tap
            (Color_Type, 121, "Color_Type");
    -- Tap's parameters are the type to tap, a numeric ID you pick
    -- to associate with it, and an optional string that will be
    -- later conveyed to the viewer.

Then wherever you want to record the current value insert:

    Tap_Color(Current_Color);

At this point the current value of Current_Color goes out to the log
file.

Now what you can do with DTraq is monitor your taps live while the
program is running, and verify that they're taking on the values you
expected as the program is put through its paces.

After you've done your run, you can then reload a log file into DTraq
and have it play it back for you, single or multiple step through the
logged data, forward or backward, reviewing how the key values changed
as the program executed.  And of course you can print out all or
portions of the logged data.


The key area where DTraq differs from other loggers is in the
conversion from raw bytes to text.  DTraq scans your Ada source code,
and with the aid of the Ada Semantic Information Specification (ASIS)
automatically locates the "Tap" invocations, identifies each type being
tapped, and analyzes it (including any components it may have) to
understand how to convert instances of the data type into
corresponding text, whether that item is a number, a character,
string, enumeration, record, or array.

This is all automatically done by running the "mkdtq" component of
DTraq over your code base--you NEVER have to manually convert, or
describe how to convert, raw data to text.  When a data item changes
or a new one is added, another invocation of mkdtq automatically picks
up the changes.

Makes things _much_ less tedious :-)

Hope this helps, there's detailed info in the DTraq user manual, and a
fully working example accompanies the distribution and is gone over
step by step in the manual.

Marc
marc 'at' mckae.com




^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ANNOUNCE: DTraq First Public Release
  2003-09-03  0:00   ` Jeffrey Creem
@ 2003-09-03  0:55     ` Marc A. Criley
  2003-09-03  1:04       ` Jeffrey Creem
  0 siblings, 1 reply; 11+ messages in thread
From: Marc A. Criley @ 2003-09-03  0:55 UTC (permalink / raw)


Jeffrey Creem wrote:
> "Pascal Obry" <p.obry@wanadoo.fr> wrote in message
> news:ubru3cfxa.fsf@wanadoo.fr...
> 
>>I've never used nor seen such a tool. Can you provides more information
>>about what it can be used for ? How can it helps debugging ?
>>
> 
> 
> I have not looked a the details about what this tool provide but at a high
> level I can say that this
> could be really useful for "system level" debugging/analysis information.
> What I mean is that in many systems, one ends
> up creating some sort of data logging interface that keeps track of either
> inputs to some top level module and/or
> intermediate calculations to better understand how the system is operating.
> Sounds like this would be a quick way
> to get this information out more easily. It probably will not be as quick as
> some of the hand/rolled solutions (which
> dump data in a raw binary format for later offline expansion to ASCII) but
> still useful in some cases.

Pretty close :-)

DTraq does log data in binary form, though, so you get the performance 
benefits of doing that.  And it also does both near simultaneous 
conversion to text for live monitoring, and post-run conversion for 
playback, printing, and analysis.  (The logging and text conversion is 
performed by a logging server, which can run on a totally different 
machine so as to minimally interfere with the system under test.  Data 
is transferred from app to server via TCP/IP.)

Marc A. Criley
McKae Technologies




^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ANNOUNCE: DTraq First Public Release
  2003-09-03  0:55     ` Marc A. Criley
@ 2003-09-03  1:04       ` Jeffrey Creem
  0 siblings, 0 replies; 11+ messages in thread
From: Jeffrey Creem @ 2003-09-03  1:04 UTC (permalink / raw)



"Marc A. Criley" <marc@mckae.com> wrote in message
news:q_a5b.17012$EW1.1279@newsread1.news.atl.earthlink.net...
> Jeffrey Creem wrote:
> > "Pascal Obry" <p.obry@wanadoo.fr> wrote in message
> > news:ubru3cfxa.fsf@wanadoo.fr...
> Pretty close :-)
>
> DTraq does log data in binary form, though, so you get the performance
> benefits of doing that.  And it also does both near simultaneous
> conversion to text for live monitoring, and post-run conversion for
> playback, printing, and analysis.  (The logging and text conversion is
> performed by a logging server, which can run on a totally different
> machine so as to minimally interfere with the system under test.  Data
> is transferred from app to server via TCP/IP.)
>

Cool.. It makes it even more exciting than I had originally thought. (And I
was
already pretty excited about it!)





^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: ANNOUNCE: DTraq First Public Release
  2003-09-03  0:50   ` Marc A. Criley
@ 2003-09-05 16:43     ` Pascal Obry
  0 siblings, 0 replies; 11+ messages in thread
From: Pascal Obry @ 2003-09-05 16:43 UTC (permalink / raw)



"Marc A. Criley" <marc@mckae.com> writes:

[long message removed]

Thanks to you and all people who have replied to help me understand what is
DTraq about.

Pascal.

-- 

--|------------------------------------------------------
--| Pascal Obry                           Team-Ada Member
--| 45, rue Gabriel Peri - 78114 Magny Les Hameaux FRANCE
--|------------------------------------------------------
--|         http://perso.wanadoo.fr/pascal.obry
--| "The best way to travel is by means of imagination"
--|
--| gpg --keyserver wwwkeys.pgp.net --recv-key C1082595



^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2003-09-05 16:43 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-09-01 21:57 ANNOUNCE: DTraq First Public Release Marc A. Criley
2003-09-02 16:29 ` Pascal Obry
2003-09-02 17:23   ` Florian Weimer
2003-09-02 17:44     ` Pascal Obry
2003-09-02 18:12       ` Florian Weimer
2003-09-02 20:54   ` Guillaume Foliard
2003-09-03  0:00   ` Jeffrey Creem
2003-09-03  0:55     ` Marc A. Criley
2003-09-03  1:04       ` Jeffrey Creem
2003-09-03  0:50   ` Marc A. Criley
2003-09-05 16:43     ` Pascal Obry

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