Map of functions

Francesco Mecca me at francescomecca.eu
Sat Dec 15 00:43:00 UTC 2018


On Friday, 14 December 2018 at 17:45:26 UTC, rjframe wrote:
> On Fri, 14 Dec 2018 16:33:44 +0000, Giovanni Di Maria wrote:
>
>> 
>> I need the flow of calls.
>> Thank you Giovanni
>
> gprof will do this on Linux/BSD if gdc supports the -pg flag (I 
> don't know whether it would, but assume so) and your 
> application is working.
>
>
> From code, you'd need to call a trace function on function 
> entry. Mine lets you also specify a message (parameter values, 
> etc.):
>
> ---
> void trace(T...)(T args, string func = __FUNCTION__) {
>     import std.stdio : writeln;
>     if (args.length > 0) {
>         debug writeln("*trace: ", func, "- ", args);
>     } else {
>         debug writeln("*trace: ", func);
>     }
> }
>
> void main(int a, string b) {
>     trace();
>     trace(a, ", ", b);
> }
> ---

You can also generate a call graph using callgrind.
That however will slow down your program.

There are some python script that converts the output of 
callgrind to a dot file that can be converted to svg.

https://stackoverflow.com/questions/33769323/make-callgrind-show-all-function-calls-in-the-kcachegrind-callgraph


More information about the Digitalmars-d-learn mailing list