Exemplo n.º 1
0
        public MinidumpReader(string displayName, Stream stream, CacheOptions cacheOptions, bool leaveOpen)
        {
            if (displayName is null)
            {
                throw new ArgumentNullException(nameof(displayName));
            }

            if (stream is null)
            {
                throw new ArgumentNullException(nameof(stream));
            }

            DisplayName = displayName;

            _minidump = new Minidump(displayName, stream, cacheOptions, leaveOpen);

            Architecture = _minidump.Architecture switch
            {
                MinidumpProcessorArchitecture.Amd64 => Architecture.X64,
                MinidumpProcessorArchitecture.Arm => Architecture.Arm,
                MinidumpProcessorArchitecture.Arm64 => Architecture.Arm64,
                MinidumpProcessorArchitecture.Intel => Architecture.X86,
                _ => throw new NotImplementedException($"No support for platform {_minidump.Architecture}"),
            };

            PointerSize = _minidump.PointerSize;
        }
Exemplo n.º 2
0
        public MinidumpReader(string crashDump, FileStream stream, CacheOptions cacheOptions)
        {
            if (crashDump is null)
            {
                throw new ArgumentNullException(nameof(crashDump));
            }

            if (stream is null)
            {
                throw new ArgumentNullException(nameof(stream));
            }

            DisplayName = crashDump;

            _minidump = new Minidump(crashDump, stream, cacheOptions);

            Architecture = _minidump.Architecture switch
            {
                MinidumpProcessorArchitecture.Amd64 => Architecture.Amd64,
                MinidumpProcessorArchitecture.Arm => Architecture.Arm,
                MinidumpProcessorArchitecture.Arm64 => Architecture.Arm64,
                MinidumpProcessorArchitecture.Intel => Architecture.X86,
                _ => throw new NotImplementedException($"No support for platform {_minidump.Architecture}"),
            };

            PointerSize = _minidump.PointerSize;
        }
Exemplo n.º 3
0
 private bool IsMinidump(Stream decompressed)
 {
     try
     {
         return(Minidump.IsValidMinidump(new StreamAddressSpace(decompressed)));
     }
     catch
     {
         return(false);
     }
 }
Exemplo n.º 4
0
 public override IEnumerable <SymbolStoreKey> GetKeys(KeyTypeFlags flags)
 {
     if (IsValid())
     {
         try
         {
             var dump = new Minidump(_dataSource);
             return(dump.LoadedImages
                    .Select((MinidumpLoadedImage loadedImage) => new PEFileKeyGenerator(Tracer, loadedImage.Image, loadedImage.ModuleName))
                    .SelectMany((KeyGenerator generator) => generator.GetKeys(flags)));
         }
         catch (InvalidVirtualAddressException ex)
         {
             Tracer.Error("Minidump {0}", ex.Message);
         }
     }
     return(SymbolStoreKey.EmptyArray);
 }
Exemplo n.º 5
0
        public MinidumpReader(string crashDump)
        {
            if (crashDump is null)
            {
                throw new ArgumentNullException(nameof(crashDump));
            }

            _minidump = new Minidump(crashDump);

            Architecture = _minidump.Architecture switch
            {
                MinidumpProcessorArchitecture.Amd64 => Architecture.Amd64,
                MinidumpProcessorArchitecture.Arm => Architecture.Arm,
                MinidumpProcessorArchitecture.Arm64 => Architecture.Arm64,
                MinidumpProcessorArchitecture.Intel => Architecture.X86,
                _ => throw new NotImplementedException($"No support for platform {_minidump.Architecture}"),
            };

            PointerSize = _minidump.PointerSize;
        }
Exemplo n.º 6
0
 public override bool IsValid()
 {
     return(Minidump.IsValid(_dataSource));
 }