www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Call diagram generation

reply Strt <strt spam.com> writes:
How can I generate some sort of call diagram from my D code?
Jan 02 2010
parent reply Lutger <lutger.blijdestijn gmail.com> writes:
On 01/03/2010 04:31 AM, Strt wrote:
 How can I generate some sort of call diagram from my D code?

you can compile with (dmd) -profile and run the executable. This produces a file called trace.log which contains timings for each function and a call graph. It doesn't produce a diagram and has mangled symbols though. You can demangle with std.demangle, read the trace.log with descent or use this utility: http://www.dsource.org/projects/scrapple/wiki/PtraceUtility I haven't updated ptrace in quite a while, so I'm not sure if it still works.
Jan 03 2010
parent reply strt spam.com> <strt spam.com> writes:
Lutger Wrote:

 On 01/03/2010 04:31 AM, Strt wrote:
 How can I generate some sort of call diagram from my D code?

you can compile with (dmd) -profile and run the executable. This produces a file called trace.log which contains timings for each function and a call graph. It doesn't produce a diagram and has mangled symbols though. You can demangle with std.demangle, read the trace.log with descent or use this utility: http://www.dsource.org/projects/scrapple/wiki/PtraceUtility I haven't updated ptrace in quite a while, so I'm not sure if it still works.

I just noticed it is called a call graph, being directed and all. I really just needed the visual thing and seeing that I need to get tango to work to use ptrace (and then maybe it won't work) I really should just take pencil and paper, I think. Also, it is only a sub-section (30 functions or so) I'm interested in. Thanks anyway!
Jan 04 2010
parent BCS <none anon.com> writes:
Hello Strt,

 Lutger Wrote:
 
 On 01/03/2010 04:31 AM, Strt wrote:
 
 How can I generate some sort of call diagram from my D code?
 

produces a file called trace.log which contains timings for each function and a call graph. It doesn't produce a diagram and has mangled symbols though. You can demangle with std.demangle, read the trace.log with descent or use this utility: http://www.dsource.org/projects/scrapple/wiki/PtraceUtility I haven't updated ptrace in quite a while, so I'm not sure if it still works.

I really just needed the visual thing and seeing that I need to get tango to work to use ptrace (and then maybe it won't work) I really should just take pencil and paper, I think. Also, it is only a sub-section (30 functions or so) I'm interested in. Thanks anyway!

With a little persitance, I'd bet that you could make a awk/grep/sed system that would convert that output to a graphviz file. With a little fun using pragma(msg,...) and .mangleof you could even get demangled symbols.
Jan 05 2010