Поделиться через


Использование символов

Общие сведения о символах, включая использование файлов символов и серверов символов, см. в разделе "Символы".

Имена символов и расположения

Чтобы найти расположение символа, заданного его именем, используйте 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. Перезагрузив символы для модуля, удаляются все синтетические символы, связанные с этим модулем.

Путь к символам

Чтобы добавить каталог или сервер символов в путь к символу, используйте метод AddSymbolPath. Весь путь к символам возвращается GetSymbolPath и может быть изменён с помощью SetSymbolPath.