digitalmars.D.learn - Map of functions
- Giovanni Di Maria (11/11) Dec 14 2018 Hi
- Ivan Kazmenko (18/29) Dec 14 2018 Do you really have a nested function print() inside a nested
- Giovanni Di Maria (17/19) Dec 14 2018 Hi
- rjframe (19/22) Dec 14 2018 gprof will do this on Linux/BSD if gdc supports the -pg flag (I don't kn...
- Giovanni Di Maria (3/3) Dec 14 2018 Thank you very much,
- Francesco Mecca (6/30) Dec 14 2018 You can also generate a call graph using callgrind.
- Giovanni Di Maria (3/3) Dec 16 2018 Thank you very much.
Hi Is there an utility to print the functions in a source file, for example: - main() --- calculate() ----- print() --- simulate() ----- print() ..... Thank you very much Giovanni Di Maria
Dec 14 2018
On Friday, 14 December 2018 at 15:38:49 UTC, Giovanni Di Maria wrote:Hi Is there an utility to print the functions in a source file, for example: - main() --- calculate() ----- print() --- simulate() ----- print() ..... Thank you very much Giovanni Di MariaDo you really have a nested function print() inside a nested function calculate() inside main()? That is, void main() { void calculate() { void print() { } // maybe some calls to print() } // maybe some calls to calculate() } Or are you talking about the sequence in which function are *called*, and from where? Please clarify. Ivan Kazmenko.
Dec 14 2018
Do you really have a nested function print() inside a nested function calculate() inside main()? That is,Hi this is only an example of names of funcions but the structure is this: void main() { // maybe some calls to calculate() } void calculate() { // maybe some calls to print() } void print() { } I need the flow of calls. Thank you Giovanni
Dec 14 2018
On Fri, 14 Dec 2018 16:33:44 +0000, Giovanni Di Maria wrote:I need the flow of calls. Thank you Giovannigprof 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); } ---
Dec 14 2018
Thank you very much, Fantastic!!! Giovanni
Dec 14 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: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-callgraphI need the flow of calls. Thank you Giovannigprof 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); } ---
Dec 14 2018