GPS provides an interface to GNATstack
, the static stack analysis tool.
This interface is enabled only if you have the gnatstack executable
installed on your system and available on the path.
Stack usage information can be computed from, loaded and visualized in GPS for the entire project hierarchy used in GPS. Stack usage information for unknown and unbounded calls can be edited in GPS.
Once computed and loaded, the stack usage information is summarized in a report, and used to decorate source code through stack usage annotations. The largest stack usage path is filled into the The Locations View.
Stack usage information for undefined subprograms can be specified by adding
a .ci file to the set of GNATStack switches in the Switches
attribute of the Stack
package of your root project, e.g:
project P is package Stack is for Switches use ("my.ci"); end Stack; end P;
You can also specify this information by using the
GNATStack
page of the Switches
section in the
The Project Properties Editor. Several files can be specified.
The Stack Usage Editor can be used to edit stack usage information for undefined subprograms.
All stack analysis related operations are reachable via the Tools->Stack
Analysis
menu:
When clicking on a project, file or subprogram entity (including the entities listed in the coverage report), you have access to a Stack Analysis submenu.
This submenu contains the following entries, related to the entity selected:
When the stack usage information is loaded, a report is displayed containing a summary of the stack analysis.
The Stack Usage Editor allows to specify stack usage for undefined subprograms and use these values to refine results of future analysis.
The Stack Usage Editor consists of two main areas. The notebook in the top area allows to select the file to edit. It displays the contents of the file and allows changing the stack usage of subprograms. The table in the bottom area displays all subprograms whose stack usage information is not specified so that they can be set.
Stack usage information for subprograms can be specified or changed by clicking in the stack usage column on the right of the subprogram's name. When a value is specified in the bottom area table, the subprogram is moved to the top table of the currently selected file. When a negative value is specified, the subprogram is moved to the bottom table.
All changes are saved when the stack usage editor window is closed.