in jet-symbols/src/JetBrains.CommandLine.Symbols/UpdateSourceUrlsCommand.cs [26:76]
public int Execute()
{
if (!_symbolsFile.ExistsFile)
{
Console.Error.WriteLine("PDB file {0} does not exist.", _symbolsFile);
return 1;
}
if (!_sourceDescriptorFile.ExistsFile)
{
Console.Error.WriteLine("Source descriptor file {0} does not exist.", _sourceDescriptorFile);
return 1;
}
try
{
DebugInfoType debugInfoType;
if (!PdbUtils.TryGetPdbType(_symbolsFile, out debugInfoType))
{
throw new Exception("Invalid PDB file " + _symbolsFile);
}
if (debugInfoType != DebugInfoType.Portable)
{
throw new Exception(string.Format("Cannot update PDB file ${0}. PDB Type {1} is not supported",
_symbolsFile, debugInfoType));
}
var sourceDescriptor = ReadSourceDescriptor(_sourceDescriptorFile);
if (sourceDescriptor.Documents == null)
{
throw new Exception(string.Format("Source Link file ${0} is empty", _sourceDescriptorFile));
}
var symbolsFile = _symbolsFile.AddSuffix(".original");
_symbolsFile.MoveFile(symbolsFile, true);
if (!PortablePdbModifier.AddSourceLink(symbolsFile, _sourceDescriptorFile, _symbolsFile))
{
throw new Exception(string.Format("Cannot update PDB file ${0}. Internal error", symbolsFile));
}
}
catch (Exception e)
{
Console.Error.WriteLine("Unable to update PDF file {0}: {1} ", _symbolsFile, e.Message);
return 1;
}
return 0;
}