-
Notifications
You must be signed in to change notification settings - Fork 2
Image Info
A visual utility used to display static function callgraph, memory usage and memory content over a provided build artifact (i.e. executable, library, object file).
Additionally, if the build stage is set to provide stack usage information (so .su files generated by -fstack-usage option in gcc compiler), the generated callgraph will also display local and global consumed stack plus source location of the symbol from graph. You have following options to load a file into Image Info view:
- Choose a project which already has a built configuration target and use "Load Current Build Artifact Selection" button from this view's toolbar.
- Choose an existing build artifact file (executable, object or library file) and choose "Image Info" option from its context menu.
Once loaded, the view will display two trees: Callgraph and Memory:
Callgraph displays all the function calls in a tree, also displaying additional information:
- Run address
- Depth of call
- Static or dynamic allocation
- Local and global cost (stack allocation)
If a recursive call is identified, the callgraph only displays the second occurrence and marks it with "Recursive" message:
For exploring convenience, the exception handlers are grouped in a separate virtual node.
Memory tree displays the identified memories (only for executable, not for object files) with several information:
- Start and end addresses
- Size of the memory
- Occupied and free space plus usage information as %
Each memory contains sections and then symbols, all of them containing various information like:
- Run address
- Load address (only available if map file is available in project)
- Occupied size
Note: Some difference might appear comparing sum of all symbols in a section and the size of used space in that section. This is because simply summing symbols is not taking into account padding and alignments.
File tree displays the symbols organized by source files.
Once an image is loaded into this view, you have several other options in toolbar for:
- Refresh. Note that refresh operation will consider a built image from the last file selection.
- Sort symbols by name.
- For Callgraph only: sort ascending or descending by local or global stack consumption (cost).
- For Memory and File only: sort ascending or descending by symbol code size.
- For C++ only: set to display symbols as mangled or demangled form.
- Option to strip or to keep assembly symbols from Callgraph. By default, assembly symbols are removed from Callgraph. The symbols are considered as "assembly" if the user is using -fstack-usage to generate stack usage information for the symbols from C/C++ sources, but some symbols from disassembled application are not found in this generated stack usage information.
- Collapse all the expanded nodes.
Where available, each symbol provides link to its definition in the source code. Source code link availability is marked by a bullet icon near each symbol, and also the source file path is indicated when hovering the mouse over the symbol line.
Additionally, when clicking on the symbol with associated source file, the source file is open and the symbol definition goes on editor focus.
Missing file source or/and stack cost information: source code and stack cost information rely on the stack usage files generated by -fstack-usage compiler option. Most of the default created projects are providing this option by default. Still, missing this compile option will lead to empty File tree section and no source file information for the symbols.
Empty Callgraph tree: the callgraph is generated based on arm-none-eabi-objdump tool. Check its presence in the /bin directory of the toolchain associated with your project.
Use this GitHub Issues section to report ambiguities or problems encountered in this documentation. For MCUXpresso for Visual Studio Code extension issues, feedback or search for solutions and ideas please follow Community page.
Table of contents
Dependency Installation
General
Software Repositories
Project Management
Flash and Debug
Reference Guides
- Getting Started with MIMXRT1060-EVK
- Training Zephyr Getting Started
- TrustZone Examples on LPC55S6x and MCUXpresso SDK
- Multicore Examples on LPC55S6x and MCUXpresso SDK
- SDRAM Examples on RT1060 and MCUXpresso SDK
- Getting Started with MCX using Application Code Hub
- AN14120: Debugging Cortex-M on i.MX 8M, i.MX 8ULP, and i.MX 93
Troubleshooting
Useful links