SymGetLineFromName 函数 (dbghelp.h)
查找指定模块、文件名和行号的源行。
语法
BOOL IMAGEAPI SymGetLineFromName(
[in] HANDLE hProcess,
[in, optional] PCSTR ModuleName,
[in, optional] PCSTR FileName,
[in] DWORD dwLineNumber,
[out] PLONG plDisplacement,
[in, out] PIMAGEHLP_LINE Line
);
参数
[in] hProcess
最初传递给 SymInitialize 函数的进程句柄。
[in, optional] ModuleName
要在其中放置行的模块的名称。
[in, optional] FileName
要在其中放置行的文件的名称。 如果应用程序有多个具有此名称的源文件,请确保指定完整路径。
[in] dwLineNumber
要定位的行号。
[out] plDisplacement
行开头的位移(以字节为单位),或零。
[in, out] Line
指向 IMAGEHLP_LINE64 结构的指针。
返回值
如果函数成功,则返回值为 TRUE。
如果函数失败,则返回值为 FALSE。 若要检索扩展的错误信息,请调用 GetLastError。
备注
调用方必须在调用 SymGetLineFromName64 之前正确分配 Line 缓冲区并填写IMAGEHLP_LINE64结构的所需成员。
在调用此函数之前,请确保通过首先调用 SymInitialize、 SymSetOptions 和 SymLoadModule64 正确初始化符号。
此函数返回指向另一个函数可能重复使用的缓冲区的指针。 因此,请务必立即将返回的数据复制到另一个缓冲区。
所有 DbgHelp 函数(例如此函数)都是单线程的。 因此,从多个线程调用此函数可能会导致意外行为或内存损坏。 若要避免这种情况,必须将多个线程中的所有并发调用同步到此函数。
若要调用此函数的 Unicode 版本,请定义 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 |
标头 | dbghelp.h |
Library | Dbghelp.lib |
DLL | Dbghelp.dll |
可再发行组件 | DbgHelp.dll 5.1 或更高版本 |