The Symbol Browser shows useful information about your linked application and complements the information displayed in the Project Explorer window. 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. You can use the Symbol Browser to drill down to see the size and location of each part of your program. The way symbols are sorted and grouped is saved between runs; so, when you rebuild an application, SEGGER Embedded Studio automatically updates the Symbol Browser so you can see the effect of your changes on the memory layout of your program.

User interface

Button Description
Group symbols by source filename.
Group symbols by symbol type (equates, functions, labels, sections, and variables).
Group symbols by the section where they are defined.
Move the insertion point to the statement that defined the symbol.
Select columns to display.

The main part of the Symbol Browser displays each symbol (both external and static) that is linked into an application. SEGGER Embedded Studio displays the following icons to the left of each symbol:

Icon Description
Private Equate A private symbol not defined relative to a section.
Public Equate A public symbol that is not defined relative to a section.
Private Function A private function symbol.
Public Function A public function symbol.
Private Label A private data symbol, defined relative to a section.
Public Label A public data symbol, defined relative to a section.
Section A program section.

Choosing what to show

To activate the Symbol Browser window:

You can choose to display the following fields for each symbol:

Initially the Range and Size columns are shown in the Symbol Browser. To select which columns to display, use the Field Chooser button on the Symbol Browser toolbar.

To select the fields to display:
  1. Click the Field Chooser button on the Symbol Browser toolbar.
  2. Select the fields you wish to display and deselect the fields you wish to hide.

Organizing and sorting symbols

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

To group symbols by section:
  1. On the Symbol Browser toolbar, click the arrow next to the Cycle Grouping button.
  2. From the pop-up menu, choose Group By Section.

The Cycle Grouping icon will change to indicate that the Symbol Browser is grouping symbols by section.

When you group symbols by type, each symbol is classified as one of the following:

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

To group symbols by type:
  1. On the Symbol Browser toolbar, click the arrow next to the Cycle Grouping button.
  2. Choose Group By Type from the pop-up menu.

The Cycle Grouping icon will change to indicate that the Symbol Browser is grouping symbols by type.

To group symbols by source file:
  1. On the Symbol Browser toolbar, click the arrow next to the Cycle Grouping button.
  2. Choose Group By Source File.

The Cycle Grouping icon will change to indicate that the Symbol Browser is grouping symbols by source file.

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

To list symbols alphabetically:
  1. On the Symbol Browser toolbar, click the arrow next to the Cycle Grouping button.
  2. Choose Sort Alphabetically.

The Cycle Grouping icon will change to indicate that the Symbol Browser is grouping symbols alphabetically.

Filtering and finding symbols

When you're dealing with big projects with hundreds, or even thousands, of symbols, a way to filter those symbols in order to isolate just the ones you need is very useful. The Symbol Browser's toolbar provides an editable combobox} you can use to specify the symbols you'd like displayed. You can type ‘*’ 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. Note: 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 instance, 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, because it is implied.

To display symbols that end with a common suffix:

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

When 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 a symbol's definition using the Go To Definition button.

To jump to the definition of a symbol:
  1. Select the symbol from the list of symbols.
  2. On the Symbol Browser toolbar, click Go To Definition.

—or—

  1. Right-click the symbol in the list of symbols.
  2. Choose Go To Definition from the shortcut menu.

Watching symbols

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:
  1. In the Symbol Browser, right-click the symbol you wish to add to the Watch window.
  2. On the shortcut menu, choose Add To Watch.
To add a symbol to the Memory window:
  1. In the Symbol Browser, right-click the symbol you wish to add to the Memory window.
  2. Choose Locate Memory from the shortcut menu.

Using size information

Here are a few common ways to use the Symbol Browser:

What function uses the most code space? What requires the most data space?
  1. Choose View > Symbol Browser.
  2. In the Grouping button menu on the Symbol Browser toolbar, select Group By Type.
  3. Ensure the Size field is checked in the Field Chooser button's menu.
  4. Ensure that the filter on the Symbol Browser toolbar is empty.
  5. Click on the Size field in the header to sort by data size.
  6. The sizes of variables and of functions are shown in separate lists.
What's the overall size of my application?
  1. Choose View > Symbol Browser.
  2. In the Grouping button menu on the Symbol Browser toolbar, select Group By Section.
  3. Ensure the Range and Size fields are checked in the Field Chooser button's menu.
  4. Read the section sizes and ranges of each section in the application.