Dynamic tracing of C code execution

N

Nikhil

Hi,

I have a set of C source files and I need a tool which can add probes
and then dynamically trace the execution and print the results (The C
source code does not have any printf statements).

The purpose of the tool is to add test cases for unit testing and then
see the statement/branch coverage for them.

Thanks,

Nikhil
 
V

Vladimir Oka

Nikhil opined:
Hi,

I have a set of C source files and I need a tool which can add probes
and then dynamically trace the execution and print the results (The C
source code does not have any printf statements).

The purpose of the tool is to add test cases for unit testing and
then see the statement/branch coverage for them.

I can't think of such a tool right now, but I do wonder how would it
know where to put "print" statements, and what to print out, without
heavy input from you? While specifying that, you might as well add
your own debug "print" statements, and guard them with `#ifdef`s so
they're only compiled in for debug/test purposes. As a bonus, you
won't be relying on a tool still being available (and supporting
whatever next platform you port to) sometime in the future.

--
Fatal Error: Found [MS-Windows] System -> Repartitioning Disk for
Linux...
(By (e-mail address removed), Christopher Browne)

<http://clc-wiki.net/wiki/Introduction_to_comp.lang.c>
 
M

Michael Mair

Vladimir said:
Nikhil opined:


I can't think of such a tool right now, but I do wonder how would it
know where to put "print" statements, and what to print out, without
heavy input from you? While specifying that, you might as well add
your own debug "print" statements, and guard them with `#ifdef`s so
they're only compiled in for debug/test purposes. As a bonus, you
won't be relying on a tool still being available (and supporting
whatever next platform you port to) sometime in the future.

You even can go one step further and
#ifdef TRACE_ON
# define TRACE_PRINT(a) fputs(a, TRACE_FILE)
#else
# define TRACE_PRINT(a)
#endif
There is also the ((....)) trick
#ifdef TRACE_ON
# define TRACE_PRINTF(a) fprintf a
#else
# define TRACE_PRINTF(a)
#endif
"called" via
TRACE_PRINTF((TRACE_FILE, formatstring, ....))


Cheers
Michael
 
W

Walter Bright

Nikhil said:
Hi,

I have a set of C source files and I need a tool which can add probes
and then dynamically trace the execution and print the results (The C
source code does not have any printf statements).

The purpose of the tool is to add test cases for unit testing and then
see the statement/branch coverage for them.

Here's a tool that will get you started:

http://www.digitalmars.com/ctg/trace.html

-Walter Bright
www.digitalmars.com C, C++, D programming language compilers
 
I

Ira Baxter

Nikhil said:
Hi,

I have a set of C source files and I need a tool which can add probes
and then dynamically trace the execution and print the results (The C
source code does not have any printf statements).

The purpose of the tool is to add test cases for unit testing and then
see the statement/branch coverage for them.

See the white paper, "TestCoverage.pdf" at
http://www.semanticdesigns.com/Products/TestCoverage
It explains how to use a program transformation tool
to insert probes in source code. The paper is focused
on probes for test coverage, but the ideas work for
any kind of probe.
 
F

Frank Pittel

: Hi,

: I have a set of C source files and I need a tool which can add probes
: and then dynamically trace the execution and print the results (The C
: source code does not have any printf statements).

: The purpose of the tool is to add test cases for unit testing and then
: see the statement/branch coverage for them.

: Thanks,

: Nikhil

Use truss.
--
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,995
Messages
2,570,230
Members
46,819
Latest member
masterdaster

Latest Threads

Top