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


Поиск символов

После загрузки файла символов в обработчик символов приложение может использовать функции указателя символов для возврата сведений о символах для указанного адреса. Эти функции также могут найти имя файла исходного кода и расположение номера строки для адреса.

Перечисление файлов символов

Чтобы получить список всех файлов символов, загруженных по имени модуля, вызовите функцию SymEnumerateModules64 . Пример см. в разделе "Перечисление модулей символов". Чтобы получить список символов для данного модуля, вызовите функцию SymEnumSymbols . Пример см. в разделе "Перечисление символов".

Получение символов по адресу

Чтобы получить символьные сведения для определенного адреса, используйте функцию SymFromAddr . Эта функция извлекает информацию и сохраняет ее в структуре SY МБOL_INFO. Так как имена символов являются переменной длины, необходимо предоставить дополнительное буферное пространство после объявления структуры SY МБOL_INFO. Пример см. в разделе "Получение сведений о символах по адресу".

Обратите внимание, что адрес не должен находиться на границе символа. Если адрес поступает после начала символа, но до конца символа (начало символа плюс размер символа), функция будет находить символ.

Получение символов по имени символа

Чтобы получить символьные сведения в структуре SY МБOL_INFO для определенного модуля и имени символа, используйте функцию SymFromName. Если задана отложенная загрузка символов, SymFromName попытается загрузить файл символов для модуля, если он еще не загружен. Чтобы указать имя модуля вместе с именем символа, используйте модуль синтаксиса!SymName. Символ "!" разделит имя модуля из имени символа. Пример см. в разделе "Получение сведений о символах по имени".

Получение номеров строк по адресу

Чтобы получить расположение исходного кода для определенного адреса, используйте функцию SymGetLineFromAddr64 . Эта функция заполняет структуру IMAGEHLP_LINE64 , содержащую имя исходного файла и расположение номера строки, указанное по указанному адресу. Пример см. в разделе "Получение сведений о символах по адресу".

Получение номеров строк по имени символа

Чтобы получить расположение исходного кода для определенного имени символа, используйте функцию SymGetLineFromName64 . Эта функция похожа на SymGetSymFromName64, но получает IMAGEHLP_LINE64 структуру. Чтобы использовать SymGetLineFromAddr64 или SymGetLineFromName64, необходимо задать параметр строк загрузки (SYMOPT_LOAD_LINES) с помощью функции SymSetOptions. Пример см. в разделе "Получение сведений о символах по имени".