SplitSymbols

The SplitSymbols function strips symbols from an image.

BOOL SplitSymbols(

IN LPSTR ImageName,  
IN LPSTR SymbolsPath,  
OUT LPSTR SymbolFilePath,  
IN DWORD Flags  
);  

Parameters

ImageName

The name of the image to split symbols from.

SymbolsPath

A subdirectory for storing symbols. (This is optional.)

SymbolFilePath

The name of the generated symbol file (.DBG extension).

Flags

Zero or a combination of the following flag values:

Value Meaning
SPLITSYM_EXTRACT_ALL Usually, an image with the symbols split off will still contain a MISC debug directory with the name of the .DBG file. In this way, the debugger will know where to find the symbols. Using this flag removes this link and the end result is similar to using the -debug:none switch on the linker.
SPLITSYM_REMOVE_PRIVATE This strips off the private CodeView (CV) symbolic information when generating the .DBG file. It does this by making a call to the RemovePrivateCvSymbolic function.

Return Values

If the function succeeds, the return value is TRUE.

If the function fails, then the return value is FALSE. To retrieve extended error information, call GetLastError.

Remarks

The SplitSymbols function should be used when stripping symbols from an image. It will create a .DBG file that all the Microsoft Win32 debuggers can understand. The format is defined in WINNT.H and consists of an image header (IMAGE_SEPARATE_DEBUG_HEADER), followed by the array of section headers, the exception (on RISC) or FPO (on X86) information, and all the debug symbolic information from the image.

If NULL is passed for SymbolsPath, the .DBG file is stored in the directory where the image exists. Otherwise, it is stored in the subdirectory below SymbolsPath that matches the extension of the image. It is recommended that this method be used because it reduces the chances of symbol file collision (the symbols for foo.exe will be in SymbolsPath\exe and foo.dll will be in SymbolsPath\dll).