It is possible to measure the maximum amount of stack used by a task, by adding a switch to `gnatbind', as:
$ gnatbind -u0 file
With this option, at each task termination, its stack usage is output on
stderr
.
It is not always convenient to output the stack usage when the program
is still running. Hence, it is possible to delay this output until program
termination. for a given number of tasks specified as the argument of the
-u
option. For instance:
$ gnatbind -u100 file
will buffer the stack usage information of the first 100 tasks to terminate and output this info at program termination. Results are displayed in four columns:
Index | Task Name | Stack Size | Stack Usage
where:
The environment task stack, e.g., the stack that contains the main unit, is only processed when the environment variable GNAT_STACK_LIMIT is set.
The package GNAT.Task_Stack_Usage provides facilities to get stack usage reports at run-time. See its body for the details.