The Symbol Browser displays useful information about your linked application. You can select different ways to filter and group the information in the symbol browser to provide an at-a-glance overview of your application as a whole. You can use the symbol browser to drill down to see how big each part of your program is and where it's placed. The way that symbols are sorted and grouped is saved between runs. When you rebuild an application, the symbol browser is updated automatically so you can see the effect your changes are making to the memory layout of your program.

Selecting the columns to display

Initially the Range and Size columns are shown in the Symbol Browser. You can select which columns to display using the Field Chooser on the symbol browser toolbar. You can choose to display the following fields:

To select a field to display

—or—

Grouping symbols by section

When you group symbols by section, each symbol is grouped underneath the section that it is defined in. Symbols that are absolute or are not defined within a section are grouped beneath “(No Section)”.

To group symbols by section

—or—

The Cycle Grouping tool button icon will change to indicate that the symbol browser is now grouping symbols by section.

Grouping symbols by type

When you group symbols by type, each symbol is grouped underneath the type of symbol that it is. Each symbol is classified as one of the following:

To group symbols by source type

—or—

The Cycle Grouping tool button icon will change to indicate that the symbol browser is now grouping symbols by type.

Grouping symbols by source file

When you group symbols by source file, each symbol is grouped underneath the source file that it is defined in. Symbols that are absolute, are not defined within a source file, or are compiled with without debugging information, are grouped beneath “(Unknown)”.

To group symbols by source file

—or—

The Cycle Grouping tool button icon will change to indicate that the symbol browser is now grouping symbols by source file.

Sorting symbols alphabetically

When you sort symbols alphabetically, all symbols are displayed in a single list in alphabetical order.

To group symbols alphabetically

—or—

The Cycle Grouping tool button icon will change to indicate that the symbol browser is now grouping symbols alphabetically.

Filtering symbols

When you're dealing with big projects with hundreds, or even thousands, of symbols, a way to filter the display of those symbols and drill down to the ones you need is very useful. The Symbols Browser provides an editable combo box in the toolbar which you can use to specify the symols you'd like displayed. The Symbol Browser uses “*” to match a sequence of zero or more characters and “?” to match exactly one character.

The symbols are filtered and redisplayed as you type into the combo box. Typing the first few characters of a symbol name is usually enough to narrow the display to the symbol you need. One thing to note is that the C compiler prefixes all high-level language symbols with an underscore character, so the variable extern int u or the function void fn(void) have low-level symbol names _u and _fn. The Symbol Browser uses the low-level symbol name when displaying and filtering, so you must type the leading underscore to match high-level symbols.

To display symbols that start with a common prefix

For instamce, to display all symbols that start with “i2c_”, type “i2c_” and all matching symbols are displayed—you don't need to add a trailing “*” in this case as it is implied.

To display symbols that end with a common suffix

For instamce, to display all symbols that end in “_data”, type “*_data” and all matching symbols are displayed—in this case the leading “*” is required.

Finding symbol definitions

Once you have found the symbol you're interested in and your source files have been compiled with debugging information turned on, you can jump to the definition of a symbol using the Go To Definition tool button.

To go to the definition of a symbol

—or—

Adding a symbol to a watch or memory window

If a symbol's range and type is known, you can add it to the most recently opened watch window or memory window.

To add a symbol to the watch window
To add a symbol to the memory window

Putting the Symbol Browser to use

Here are a few common ways to use the symbol browser:

What function takes up the most code space or what takes the most data space?
What's the overall size of my application?