Worst Stack Size Report

The default Worst Stack Size report is in HTML format. It is generated from a template named wssreport.template provided as a text file that you can modify to customize the report. It uses four online JavaScript libraries:
  • Bootstrap,
  • JQuery,
  • Font Awesome,
  • VisJS.

These libraries are not provided. You need an internet connection when you open the report. Otherwise, you have to download the libraries (.css and .js files), copy them in the same folder as your report's, and modify the template file as follows:

Replace:
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.5.0/css/all.css" integrity="sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css">
…
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.js"></script>
with
<link rel="stylesheet" href="./bootstrap.min.css>
<link rel="stylesheet" href="./all.css">
<link rel="stylesheet" href="./vis.min.css">
…
<script src="./jquery-3.3.1.slim.min.js"></script>
<script src="./popper.min.js"></script>
<script src="./bootstrap.min.js"></script>
<script src="./vis.js"></script
The Worst Stack Size report is made of three parts.

Summary

The Summary table displays the following information:
  • The worst stack size computed by the tools, given the information you provided. This number is provided in bytes.
  • 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 without calls 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 we have not provided an estimation of the stack size.

    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.

    So, if a piece of information in the summary is red, verify the worst stack size computed by the tool.

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, i.e. the successive functions starting from an entry point (each the function that is never called by another one is considered as an entry point) to a function without calls or to an external function. Each function is identified by its name, its module (i.e. 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 compute 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 for 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 top to 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.


Feedback