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


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

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

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

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