MCPcopy Index your code
hub / github.com/nodejs/node / MinidumpReader

Class MinidumpReader

deps/v8/tools/grokdump.py:618–1144  ·  view source on GitHub ↗

Minidump (.dmp) reader.

Source from the content-addressed store, hash-verified

616
617
618class MinidumpReader(object):
619 """Minidump (.dmp) reader."""
620
621 _HEADER_MAGIC = 0x504d444d
622
623 def __init__(self, options, minidump_name):
624 self._reset()
625 self.minidump_name = minidump_name
626 if sys.platform == 'win32':
627 self.minidump_file = open(minidump_name, "a+")
628 self.minidump = mmap.mmap(self.minidump_file.fileno(), 0)
629 else:
630 self.minidump_file = open(minidump_name, "r")
631 self.minidump = mmap.mmap(self.minidump_file.fileno(), 0, mmap.MAP_PRIVATE)
632 self.header = MINIDUMP_HEADER.Read(self.minidump, 0)
633 if self.header.signature != MinidumpReader._HEADER_MAGIC:
634 print("Warning: Unsupported minidump header magic!", file=sys.stderr)
635 DebugPrint(self.header)
636 offset = self.header.stream_directories_rva
637 directories = []
638 for _ in range(self.header.stream_count):
639 directories.append(MINIDUMP_DIRECTORY.Read(self.minidump, offset))
640 offset += MINIDUMP_DIRECTORY.size
641
642 self.symdir = options.symdir
643 self._ReadArchitecture(directories)
644 self._ReadDirectories(directories)
645 self._FindObjdump(options)
646
647 def _reset(self):
648 self.header = None
649 self.arch = None
650 self.exception = None
651 self.exception_context = None
652 self.memory_list = None
653 self.memory_list64 = None
654 self.module_list = None
655 self.thread_map = {}
656
657 self.modules_with_symbols = []
658 self.symbols = []
659
660
661 def _ReadArchitecture(self, directories):
662 # Find MDRawSystemInfo stream and determine arch.
663 for d in directories:
664 if d.stream_type == MD_SYSTEM_INFO_STREAM:
665 system_info = MINIDUMP_RAW_SYSTEM_INFO.Read(
666 self.minidump, d.location.rva)
667 self.arch = system_info.processor_architecture
668 if self.arch == MD_CPU_ARCHITECTURE_ARM64_BREAKPAD_LEGACY:
669 self.arch = MD_CPU_ARCHITECTURE_ARM64
670 assert self.arch in [MD_CPU_ARCHITECTURE_AMD64,
671 MD_CPU_ARCHITECTURE_ARM,
672 MD_CPU_ARCHITECTURE_ARM64,
673 MD_CPU_ARCHITECTURE_X86]
674 assert not self.arch is None
675

Callers 2

__init__Method · 0.85
AnalyzeMinidumpFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected