in teamcity-symbol-agent/src/main/java/jetbrains/buildServer/symbols/SymbolsIndexer.java [230:268]
private void processPdbArtifacts(Map<File, String> pdbFiles) {
final PdbFilePatcherAdapterFactory patcherAdapter = new PdbFilePatcherAdapterFactoryImpl(
myFileUrlProvider,
myProgressLogger,
new PdbStrExe(mySrcSrvHomeDir),
myJetSymbolsExe,
new SrcToolExe(mySrcSrvHomeDir));
final PdbFilePatcher pdbFilePatcher = new PdbFilePatcher(
myBuildTempDirectory,
myJetSymbolsExe,
patcherAdapter,
myProgressLogger
);
for(File pdbFile : pdbFiles.keySet()){
if(myPdbFileToArtifactMap.containsKey(pdbFile)){
LOG.debug(String.format("File %s already processed. Skipped.", pdbFile.getAbsolutePath()));
continue;
}
final String blockName = "Pdb file";
myProgressLogger.message("Indexing sources in file " + pdbFile.getAbsolutePath());
try {
myProgressLogger.logMessage(DefaultMessagesInfo.createBlockStart(blockName, "symbol-server"));
if (pdbFilePatcher.patch(pdbFile)) {
final String artifactPath = myArtifactPathHelper.concatenateArtifactPath(pdbFiles.get(pdbFile), pdbFile.getName());
final PdbSignatureIndexEntry signatureIndexEntry = getPdbSignature(pdbFile);
myPdbFileToArtifactMap.put(pdbFile, artifactPath);
myPdbFileSignatures.add(signatureIndexEntry);
}
} catch (Throwable e) {
LOG.error("Error occurred while processing symbols file " + pdbFile, e);
myProgressLogger.error("Error occurred while processing symbols file " + pdbFile);
myProgressLogger.exception(e);
} finally {
myProgressLogger.logMessage(DefaultMessagesInfo.createBlockEnd(blockName, "symbol-server"));
}
}
}