Compartilhar via


Função SymGetLineFromAddr (dbghelp.h)

Localiza a linha de origem do endereço especificado.

Sintaxe

BOOL IMAGEAPI SymGetLineFromAddr(
  [in]  HANDLE         hProcess,
  [in]  DWORD          dwAddr,
  [out] PDWORD         pdwDisplacement,
  [out] PIMAGEHLP_LINE Line
);

Parâmetros

[in] hProcess

Um identificador para o processo que foi originalmente passado para a função SymInitialize .

[in] dwAddr

O endereço para o qual uma linha deve estar localizada. Não é necessário que o endereço esteja em um limite de linha. Se o endereço aparecer após o início de uma linha e antes do final da linha, a linha será encontrada.

[out] pdwDisplacement

O deslocamento em bytes desde o início da linha, ou zero.

[out] Line

Um ponteiro para uma estrutura IMAGEHLP_LINE64 .

Retornar valor

Se a função for bem-sucedida, o valor retornado será TRUE.

Se a função falhar, o valor retornado será FALSE. Para recuperar informações de erro estendidas, chame GetLastError.

Comentários

O chamador deve alocar o buffer de linha corretamente e preencher os membros necessários da estrutura IMAGEHLP_LINE64 antes de chamar SymGetLineFromAddr64.

Essa função retorna um ponteiro para um buffer que pode ser reutilizado por outra função. Portanto, lembre-se de copiar os dados retornados para outro buffer imediatamente.

Todas as funções DbgHelp, como esta, são threaded único. Portanto, chamadas de mais de um thread para essa função provavelmente resultarão em comportamento inesperado ou corrupção de memória. Para evitar isso, você deve sincronizar todas as chamadas simultâneas de mais de um thread para essa função.

Para chamar a versão Unicode dessa função, defina DBGHELP_TRANSLATE_TCHAR. SymGetLineFromAddrW64 é definido da seguinte maneira em Dbghelp.h.

BOOL
IMAGEAPI
SymGetLineFromAddrW64(
    _In_ HANDLE hProcess,
    _In_ DWORD64 dwAddr,
    _Out_ PDWORD pdwDisplacement,
    _Out_ PIMAGEHLP_LINEW64 Line
    );

#ifdef DBGHELP_TRANSLATE_TCHAR
 #define SymGetLineFromAddr64   SymGetLineFromAddrW64
#endif

Essa função substitui a função SymGetLineFromAddr . Para obter mais informações, consulte Suporte de plataforma atualizado. SymGetLineFromAddr é definido da seguinte maneira em Dbghelp.h.

#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
#define SymGetLineFromAddr SymGetLineFromAddr64
#define SymGetLineFromAddrW SymGetLineFromAddrW64
#else
BOOL
IMAGEAPI
SymGetLineFromAddr(
    _In_ HANDLE hProcess,
    _In_ DWORD dwAddr,
    _Out_ PDWORD pdwDisplacement,
    _Out_ PIMAGEHLP_LINE Line
    );

BOOL
IMAGEAPI
SymGetLineFromAddrW(
    _In_ HANDLE hProcess,
    _In_ DWORD dwAddr,
    _Out_ PDWORD pdwDisplacement,
    _Out_ PIMAGEHLP_LINEW Line
    );
#endif

Exemplos

Para obter um exemplo, confira Recuperação de informações de símbolo por endereço.

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho dbghelp.h
Biblioteca Dbghelp.lib
DLL Dbghelp.dll
Redistribuível DbgHelp.dll 5.1 ou posterior

Confira também

Funções DbgHelp

IMAGEHLP_LINE64

SymGetLineFromName64

SymInitialize