Использование символов
Общие сведения о символах, включая использование файлов символов и серверов символов, см. в разделе Символы.
Имена и расположения символов
Чтобы найти расположение символа по его имени, используйте GetOffsetByName. Дополнительные сведения о синтаксисе, используемом для указания имен символов, см. в разделах Синтаксис символов и Сопоставление символов.
Если точное имя символа неизвестно или несколько символов имеют одно и то же имя, StartSymbolMatch начнет поиск символов, имена которых соответствуют заданному шаблону. Дополнительные сведения о синтаксисе см. в разделе Синтаксис строковых подстановочных знаков.
Чтобы найти имя символа по его расположению, используйте getNameByOffset. Чтобы найти имена символов в модуле рядом с заданным расположением, используйте getNearNamebyOffset.
Примечание По возможности квалифицируйте символ именем модуля, например mymodule!main. В противном случае, если символ не существует (например, из-за опечатки), подсистеме придется загружать и искать символы для каждого модуля; Это может быть медленным процессом, особенно при отладке в режиме ядра. Если в имени символа указано имя модуля, обработчику потребуется только выполнить поиск символов для этого модуля.
Символ уникально идентифицируется с помощью структуры DEBUG_MODULE_AND_ID. Эта структура возвращается методами GetSymbolEntriesByName и GetSymbolEntriesByOffset, которые выполняют поиск символов на основе их имени и расположения соответственно.
Метод GetSymbolEntryInformation возвращает описание символа с помощью структуры DEBUG_SYMBOL_ENTRY .
Чтобы найти смещение поля в структуре, используйте GetFieldOffset. Чтобы найти имя поля, заданного его индексом в структуре, используйте GetFieldName. Чтобы найти имя константы перечисления по ее значению, используйте GetConstantName.
Метод GetSymbolInformation может выполнять несколько запросов на получение сведений о символах.
Параметры символов
Способ загрузки и выгрузки символов определяется рядом параметров. Описание этих параметров см. в разделе Настройка параметров символов.
Параметры символов можно включить с помощью команды AddSymbolOptions и отключить с помощью команды RemoveSymbolOptions.
GetSymbolOptions возвращает текущие параметры символов. Чтобы задать все параметры символов одновременно, используйте SetSymbolOptions.
Перезагрузка символов
После загрузки файлов символов подсистема сохраняет сведения о символах во внутреннем кэше. Чтобы очистить этот кэш, используйте команду Перезагрузить. Эти символы должны быть загружены снова сейчас или позже.
Искусственные символы
Искусственные символы — это способ пометить произвольный адрес для удобства использования. Искусственные символы можно создать в любом существующем модуле. Метод AddSyntheticSymbol создает новый синтетический символ. Искусственные символы можно удалить с помощью RemoveSyntheticSymbol. При перезагрузке символов для модуля удаляются все искусственные символы, связанные с этим модулем.
Путь к символу
Чтобы добавить каталог или сервер символов в путь к символам, используйте метод AppendSymbolPath. GetSymbolPath возвращает весь путь к символам и может быть изменен с помощью SetSymbolPath.