SplitSymbols功能从图像中删除符号。
BOOL SplitSymbols(
IN LPSTR【ImageName】, | |
IN LPSTR【SymbolsPath】, | |
OUT LPSTR【SymbolFilePath】, | |
IN DWORD【旗】 | |
); |
参数
【ImageName】
要分割符号的图像的名称。
【SymbolsPath】
用于存储符号的子目录。(这是可选的。)
【SymbolFilePath】
生成的符号文件的名称(.DBG扩展名)。
【旗】
零或以下标志值的组合:
值 | 含义 |
SPLITSYM_EXTRACT_ALL | 通常,具有符号拆分的图像仍将包含名称为.DBG文件的MISC调试目录。这样,调试器就会知道在哪里找到符号。使用此标志会删除此链接,最终结果类似于在链接器上使用-debug:none开关。 |
SPLITSYM_REMOVE_PRIVATE | 在生成.DBG文件时,会剥离私有的CodeView(CV)符号信息。它通过调用RemovePrivateCvSymbolic函数来实现。 |
返回值
如果函数成功,返回值为TRUE。
如果函数失败,则返回值为FALSE。要检索扩展错误信息,请调用GetLastError.
备注
当从图像中删除符号时,应使用SplitSymbols函数。它将创建所有Microsoft Win32调试器可以理解的.DBG文件。该格式在WINNT.H中定义,并由图像头(IMAGE_SEPARATE_DEBUG_HEADER)组成,后面是段标题数组,RISC上的异常(X86),FPO(X86)信息以及图像中的所有调试符号信息。
如果【SymbolsPath,】传递NULL,则.DBG文件存储在映像存在的目录中。否则,它存储在匹配图像扩展名的【SymbolsPath】下面的子目录中。建议使用此方法,因为它会减少符号文件冲突的可能性(foo.exe的符号将位于【SymbolsPath】 \\ exe中,foo.dll将位于【SymbolsPath】 \\ dll中)。