The DbgHelpBrowser user interface is shown below.
The user interface consists of a main grid showing all main datatypes and functions in the debug help.
Below is a display for function parameters, function local variables, line numbers and a source code display for viewing the source code of any function or variable that is selected.
Selecting any item in the grid populates the lower grids and source code display as appropriate.
Querying any value will select the nearest item in the main grid and populate the other displays as appropriate.
Some basic filtering functionality is also provided.
The PDB information shows you the symbol name, calling convention, symbol address, symbol size, symbol type, and associated debugging flags and the filename and line number for the symbol.
You can sort the data by clicking no the column header and clicking again to reverse the direction of the sort.
If you select any item in the grid the lower grids and source code display are populated with data as appropriate.
If you right click any item a context is displayed which will allow you to perform a symbol relative query.
The parameters section lists all parameters for the selected symbol. For each parameter, the name, tag type, address, scope, size and flags are displayed.
The parameters section lists all local variables for the selected symbol. For each parameter, the name, tag type, address, scope, size and flags are displayed.
The line numbers section lists each line number, the address of that line and the offset of that line from the start of the owning function. Note that offsets can be negative as well as positive depending on how the compiler did it's work.
The source code section displays the source code, highlights the selected line and displays information relating to filename, line number, function and address.
The filters section allows you to filter data in two ways:
Tags
Filtering by tag allows you to reduce the amount of data to just the symbols that have the tag you choose. Available tags are:
All tags
Executable code
Data
SymTagNull
SymTagExe
SymTagCompiland
SymTagCompilandDetails
SymTagCompilandEnv
SymTagFunction
SymTagBlock
SymTagData
SymTagAnnotation
SymTagLabel
SymTagPublicSymbol
SymTagUDT
SymTagEnum
SymTagFunctionType
SymTagPointerType
SymTagArrayType
SymTagBaseType
SymTagTypedef
SymTagBaseClass
SymTagFriend
SymTagFunctionArgType
SymTagFuncDebugStart
SymTagFuncDebugEnd
SymTagUsingNamespace
SymTagVTableShape
SymTagVTable
SymTagCustom
SymTagThunk
SymTagCustomType
SymTagManagedType
SymTagDimension
Symbol Name
Filtering by symbol name allows you to easily find a particular symbol. This is very useful when wanting to decode a crash address that has been provided as relative to a symbol (symbol + offset).
Options on the context menu to allow you to copy the following information to the clipboard:
•Filename and line number. e:\om\c\svledittool\edittool\undotext.cpp 64
•Symbol, filename and line number. UndoText::doUndo e:\om\c\svledittool\edittool\undotext.cpp 64
•All symbol details. 30 UndoText::doUndo CV_CALL_THISCALL 0x6C168230 540 SymTagFunction e:\om\c\svledittool\edittool\undotext.cpp 64
Options on the context menu allow you to highlight multiple symbols, and to remove highlights.
Highlighting can useful when you want to easily mark a symbol for future reference. Here's an example image showing some symbols that have been highlighted.