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


Функция SymGetLineFromName64 (dbghelp.h)

Находит исходную строку для указанного модуля, имени файла и номера строки.

Синтаксис

BOOL IMAGEAPI SymGetLineFromName64(
  [in]           HANDLE           hProcess,
  [in, optional] PCSTR            ModuleName,
  [in, optional] PCSTR            FileName,
  [in]           DWORD            dwLineNumber,
  [out]          PLONG            plDisplacement,
  [in, out]      PIMAGEHLP_LINE64 Line
);

Параметры

[in] hProcess

Дескриптор процесса, который изначально был передан функции SymInitialize .

[in, optional] ModuleName

Имя модуля, в котором должна находиться строка.

[in, optional] FileName

Имя файла, в котором должна находиться строка. Если в приложении есть несколько исходных файлов с этим именем, обязательно укажите полный путь.

[in] dwLineNumber

Номер строки, который нужно найти.

[out] plDisplacement

Смещение в байтах от начала строки или ноль.

[in, out] Line

Указатель на структуру IMAGEHLP_LINE64 .

Возвращаемое значение

Если функция выполнена успешно, возвращается значение TRUE.

Если функция завершается сбоем, возвращается значение FALSE. Чтобы получить расширенные сведения об ошибке, вызовите Метод GetLastError.

Комментарии

Прежде чем вызывать SymGetLineFromName64, вызывающий объект должен правильно выделить буфер строки и заполнить необходимые элементы структуры IMAGEHLP_LINE64.

Перед вызовом этой функции убедитесь, что символы инициализированы правильно, вызвав SymInitialize, SymSetOptions и SymLoadModule64.

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

Все функции DbgHelp, такие как эта, являются однопоточными. Таким образом, вызовы из нескольких потоков к этой функции, скорее всего, приведут к непредвиденному поведению или повреждению памяти. Чтобы избежать этого, необходимо синхронизировать все параллельные вызовы из нескольких потоков в эту функцию.

Чтобы вызвать версию юникода этой функции, определите DBGHELP_TRANSLATE_TCHAR. SymGetLineFromNameW64 определяется в Dbghelp.h следующим образом.


BOOL
IMAGEAPI
SymGetLineFromNameW64(
    __in HANDLE hProcess,
    __in_opt PCWSTR ModuleName,
    __in_opt PCWSTR FileName,
    __in DWORD dwLineNumber,
    __out PLONG plDisplacement,
    __inout PIMAGEHLP_LINEW64 Line
    );

#ifdef DBGHELP_TRANSLATE_TCHAR
#define SymGetLineFromName64   SymGetLineFromNameW64
#endif

Эта функция заменяет функцию SymGetLineFromName . Дополнительные сведения см. в разделе Обновленная поддержка платформы. SymGetLineFromName определяется в dbghelp.h следующим образом.

#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
#define SymGetLineFromName SymGetLineFromName64
#else
BOOL
IMAGEAPI
SymGetLineFromName(
    __in HANDLE hProcess,
    __in_opt PCSTR ModuleName,
    __in_opt PCSTR FileName,
    __in DWORD dwLineNumber,
    __out PLONG plDisplacement,
    __inout PIMAGEHLP_LINE Line
    );
#endif

Примеры

Пример см. в разделе Извлечение сведений о символах по имени.

Требования

Требование Значение
Целевая платформа Windows
Header dbghelp.h
Библиотека Dbghelp.lib
DLL Dbghelp.dll
Распространяемые компоненты DbgHelp.dll 5.1 или более поздней версии

См. также раздел

Функции DbgHelp

IMAGEHLP_LINE64

SymGetLineFromAddr64

SymInitialize