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, CrossStudio automatically updates the Symbol Browser so you can see the effect of your changes on the memory layout of your program.
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. CrossStudio 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. |
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.
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)’.
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)’.
The Cycle Grouping icon will change to indicate that the Symbol Browser is grouping symbols by type.
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.
The Cycle Grouping icon will change to indicate that the Symbol Browser is grouping symbols alphabetically.
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.
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.
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.
—or—
If a symbol's range and type is known, you can add it to the most recently opened Watch window or Memory window.
Here are a few common ways to use the Symbol Browser: