The default Worst stack size report is in HTML format. The Worst stack size report is
generated from a template named
wssreport.template provided as a text file
that you can modify to customize the report. Worst stack size report uses the
following online JavaScript libraries:
- Bootstrap,
- JQuery,
- Font Awesome,
- VisJS.
- Chart.js
The JavaScript libraries are now provided in the installation folder
installation directory>/lib/web. The JavaScript libraries
are downloaded from the internet as default. However, if you have no access to the
internet, the template uses the JavaScript libraries that are in your installation
folder. If you want to share the report with someone who does not have access to the
internet, you might not install Test Embedded, make sure that the
disk contains the same folders and files as yours in <installation
directory>/lib/web.
Summary
- Worst Stack Size per Entry Point table
-
- The Summary section displays a table with the Worst Stack Size calculated by the tools, given
the information you provided in the build settings. This number is provided in bytes.
- The Worst Stack Size is given per entry point and per thread if you have entered the list of
entry point threads of your application in the Build Settings. You can set the list of entry point
threads of your application in the Build Settings.
- The table displays the following information:
- The number of control flows found in your application. A control flow is a set of successive
calls starting from an entry point (each function that is never called by another one is considered
as an entry point) to a function with no call or to an external function.
- The number of control flows for which we have no estimation of the stack size. This happens when
one of the functions in this control flow has not been executed or if it is an external function for
which no estimation of the stack size is provided.
If this number if greater than 0, it is
highlighted in red because there is no way to be sure that the worst stack size is really the worst
regarding the missing information.
- The number of recursive control flows found in the application. If this number if greater than
0, it is highlighted in red because there is no way to be sure that the worst stack size is really
the worst.
- The number of functions in your application.
- The number of functions without stack size estimation. These are the functions that have not
been executed or the external functions for which we have not provided an estimation of the stack
size. If this number if greater than 0, it is highlighted in red because we can't be sure that the
worst stack size is really the worst.
The information is given for each entry thread.
If
you don’t provide the list of entry points in the build settings, the information is displayed only
for the control flow and gives the Worst Stack Size.
- Total Stack Size vs. Maximum Stack Size graph
-
- If you provide in the Settings the list of entry points, optionally you can provide the maximum
Stack Size allowed and a percentage of available Stack Size for security. In such case, the report
displays the total Stack Size and verifies if this size does not go over the available Stack Size.
- The Maximum Stack Size and Percentage of available Stack Size
for security options can be set in the Build Settings.
- In the report, you can compare the Stack Size or the sum of Stack Size with the maximum of Stack
Size allowed and the percentage of available Stack Size for security if both options are provided in
the settings.
In the toolbar that is under the graph, you can select the information to display or hide (all
entry points, or for only one thread) and the number of control flows in the table. You can also
show or hide the graph in the report from a button.
Details
The
Details table lists by default the 10 first control flows with the biggest Stack Size
and displays for each of them the following information:
- The control flow, for example, the successive functions starting from an entry point (any
function that is never called by another one is considered as an entry point) to a function with no
call, or to an external function. Each function is identified by its name, its module (example: C
file) between brackets, and by the line and column where this call to the next function calls appear
in the code in parenthesis.
- The estimation of the Stack Size. The information is blank if the tool has not been able to
calculate the Stack Size for this control flow. In this case, the functions in the control flow that
prevent us from computing the Stack Size are highlighted in red.
A drop down menu at the top of the table allows you to choose 10, 20, 30, 50, 100 or all the
control flows to display.
Functions
The Functions table lists all the functions of your application, including external functions.
The following information is provided for each function:
- The module name (i.e. the C file) where the function is saved.,
- The function name. This name is in red if there is no stack information for this function,
- The number of functions called in the current one.
- The Stack Size of the function in bytes.
Call Graph
The Call Graph part displays all the functions as an interactive call graph from left to right or
from the top to the bottom, depending on the selector button position on the top of the call
graph.
You can select a control flow in the table to highlight it in the call graph.