(self, directories)
| 674 | assert not self.arch is None |
| 675 | |
| 676 | def _ReadDirectories(self, directories): |
| 677 | for d in directories: |
| 678 | DebugPrint(d) |
| 679 | if d.stream_type == MD_EXCEPTION_STREAM: |
| 680 | self.exception = MINIDUMP_EXCEPTION_STREAM.Read( |
| 681 | self.minidump, d.location.rva) |
| 682 | DebugPrint(self.exception) |
| 683 | self.exception_context = self.ContextDescriptor().Read( |
| 684 | self.minidump, self.exception.thread_context.rva) |
| 685 | DebugPrint(self.exception_context) |
| 686 | elif d.stream_type == MD_THREAD_LIST_STREAM: |
| 687 | thread_list = MINIDUMP_THREAD_LIST.Read(self.minidump, d.location.rva) |
| 688 | if ctypes.sizeof(thread_list) + 4 == d.location.data_size: |
| 689 | thread_list = MINIDUMP_THREAD_LIST_Mac.Read( |
| 690 | self.minidump, d.location.rva) |
| 691 | assert ctypes.sizeof(thread_list) == d.location.data_size |
| 692 | DebugPrint(thread_list) |
| 693 | for thread in thread_list.threads: |
| 694 | DebugPrint(thread) |
| 695 | self.thread_map[thread.id] = thread |
| 696 | elif d.stream_type == MD_MODULE_LIST_STREAM: |
| 697 | assert self.module_list is None |
| 698 | self.module_list = MINIDUMP_MODULE_LIST.Read( |
| 699 | self.minidump, d.location.rva) |
| 700 | if ctypes.sizeof(self.module_list) + 4 == d.location.data_size: |
| 701 | self.module_list = MINIDUMP_MODULE_LIST_Mac.Read( |
| 702 | self.minidump, d.location.rva) |
| 703 | assert ctypes.sizeof(self.module_list) == d.location.data_size |
| 704 | DebugPrint(self.module_list) |
| 705 | elif d.stream_type == MD_MEMORY_LIST_STREAM: |
| 706 | print("Warning: This is not a full minidump!", file=sys.stderr) |
| 707 | assert self.memory_list is None |
| 708 | self.memory_list = MINIDUMP_MEMORY_LIST.Read( |
| 709 | self.minidump, d.location.rva) |
| 710 | if ctypes.sizeof(self.memory_list) + 4 == d.location.data_size: |
| 711 | self.memory_list = MINIDUMP_MEMORY_LIST_Mac.Read( |
| 712 | self.minidump, d.location.rva) |
| 713 | assert ctypes.sizeof(self.memory_list) == d.location.data_size |
| 714 | DebugPrint(self.memory_list) |
| 715 | elif d.stream_type == MD_MEMORY_64_LIST_STREAM: |
| 716 | assert self.memory_list64 is None |
| 717 | self.memory_list64 = MINIDUMP_MEMORY_LIST64.Read( |
| 718 | self.minidump, d.location.rva) |
| 719 | assert ctypes.sizeof(self.memory_list64) == d.location.data_size |
| 720 | DebugPrint(self.memory_list64) |
| 721 | |
| 722 | def _FindObjdump(self, options): |
| 723 | if options.objdump: |
no test coverage detected