SplitSymbols 函数 (imagehlp.h)

从指定图像中去除符号。

语法

BOOL IMAGEAPI SplitSymbols(
  [in]  PSTR  ImageName,
  [in]  PCSTR SymbolsPath,
  [out] PSTR  SymbolFilePath,
  [in]  ULONG Flags
);

parameters

[in] ImageName

要从中拆分符号的图像的名称。

[in] SymbolsPath

用于存储符号的子目录。 此参数是可选的。

[out] SymbolFilePath

生成的符号文件的名称。 此文件通常具有 .dbg 扩展名。

[in] Flags

要从映像中拆分的信息。 此参数可以是零,也可以是以下值的组合。

含义
SPLITSYM_EXTRACT_ALL
0x00000002
通常,具有符号拆分的图像仍将包含一个 MISC 调试目录,其中包含符号文件的名称。 因此,调试器仍然可以找到符号。 使用此标志会删除此链接。 最终结果类似于在 Microsoft 链接器上使用 -debug:none 开关。
SPLITSYM_REMOVE_PRIVATE
0x00000001
生成符号文件时,这会去除私有 CodeView 符号信息。
SPLITSYM_SYMBOLPATH_IS_SRC
0x00000004
符号文件路径包含用于查找 .pdb 文件的备用路径。

返回值

如果函数成功,则返回值为 TRUE

如果函数失败,则返回值为 FALSE。 若要检索扩展的错误信息,请调用 GetLastError

注解

从图像中去除符号时,应使用 SplitSymbols 函数。 它将创建所有兼容调试器都能理解的符号文件。 格式在 WinNT.h 中定义,由图像标头组成,后跟节标头数组、FPO 信息以及图像中的所有调试符号信息。

如果 SymbolsPath 参数为 NULL,符号文件将存储在映像所在的目录中。 否则,它将存储在与图像扩展匹配的 SymbolsPath 下的子目录中。 使用此方法可降低符号文件冲突的可能性。 例如,myapp.exe 的符号将位于 SymbolsPath\exe 目录中,myapp.dll 的符号将位于 SymbolsPath\dll 目录中。

所有 ImageHlp 函数(例如此函数)都是单线程的。 因此,从多个线程调用此函数可能会导致意外行为或内存损坏。 若要避免这种情况,必须将多个线程中的所有并发调用同步到此函数。

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 imagehlp.h
Library Imagehlp.lib
DLL Imagehlp.dll

另请参阅

ImageHlp 函数