Mercurial > hg > tc-symbol-server
view agent/src/jetbrains/buildServer/symbols/PdbFilePatcher.java @ 29:6ac3c2491e1a
removed copyright
author | Evgeniy.Koshkin |
---|---|
date | Thu, 08 Aug 2013 19:08:42 +0400 |
parents | 76ed2d58c871 |
children | 4c516ddbddf1 |
line wrap: on
line source
package jetbrains.buildServer.symbols; import jetbrains.buildServer.agent.BuildProgressLogger; import jetbrains.buildServer.symbols.tools.PdbStrExe; import jetbrains.buildServer.symbols.tools.PdbStrExeCommands; import jetbrains.buildServer.symbols.tools.SrcToolExe; import jetbrains.buildServer.util.FileUtil; import org.apache.log4j.Logger; import java.io.File; import java.util.Collection; /** * @author Evgeniy.Koshkin */ public class PdbFilePatcher { private static final Logger LOG = Logger.getLogger(PdbFilePatcher.class); private static final File TOOLS_HOME_DIR = new File("c:\\Program Files (x86)\\Windows Kits\\8.0\\Debuggers\\x64\\srcsrv\\"); private final PdbStrExe myPdbStrExe = new PdbStrExe(TOOLS_HOME_DIR); private final SrcToolExe mySrcToolExe = new SrcToolExe(TOOLS_HOME_DIR); private final File myHomeDir; private SrcSrvStreamBuilder mySrcSrvStreamBuilder; public PdbFilePatcher(final File homeDir, final SrcSrvStreamBuilder srcSrvStreamBuilder) { myHomeDir = homeDir; mySrcSrvStreamBuilder = srcSrvStreamBuilder; } public void patch(File symbolsFile, BuildProgressLogger buildLogger) throws Exception { final Collection<File> sourceFiles = mySrcToolExe.getReferencedSourceFiles(symbolsFile); if(sourceFiles.isEmpty()){ final String message = "No source information found in pdb file " + symbolsFile.getCanonicalPath(); buildLogger.warning(message); LOG.debug(message); return; } final File tmpFile = FileUtil.createTempFile(myHomeDir, "pdb-", ".patch", false); mySrcSrvStreamBuilder.dumpStreamToFile(tmpFile, sourceFiles); myPdbStrExe.doCommand(PdbStrExeCommands.WRITE, symbolsFile, tmpFile, PdbStrExe.SRCSRV_STREAM_NAME); } }