(self, slot, start, end, print_message)
| 2288 | return self.TryExtractOldStyleStackTrace(0, start, end, print_message) |
| 2289 | |
| 2290 | def TryExtractStackTrace(self, slot, start, end, print_message): |
| 2291 | ptr_size = self.reader.MachinePointerSize() |
| 2292 | assert self.reader.ReadUIntPtr(slot) & 0xFFFFFFFF == STACK_TRACE_MARKER |
| 2293 | # Look for the mid marker after the start slot. |
| 2294 | mid_slot = self.reader.FindPtr(STACK_TRACE_MID_MARKER, start + ptr_size, |
| 2295 | start + ptr_size * 100) |
| 2296 | if not mid_slot: |
| 2297 | return self.TryExtractOldStackTrace(slot, start, end, print_message) |
| 2298 | end_search = mid_slot + (32 * 1024) + (4 * ptr_size) |
| 2299 | end_slot = self.reader.FindPtr(STACK_TRACE_END_MARKER, end_search, |
| 2300 | end_search + ptr_size * 512) |
| 2301 | if not end_slot: |
| 2302 | return start |
| 2303 | |
| 2304 | print("Stack Message (start=%s):" % self.heap.FormatIntPtr(slot)) |
| 2305 | value = self.reader.ReadUIntPtr(slot) |
| 2306 | print(" %s: %s" % ("isolate".rjust(14), self.heap.FormatIntPtr(value))) |
| 2307 | slot += ptr_size |
| 2308 | i = 0 |
| 2309 | while slot < mid_slot: |
| 2310 | value = self.reader.ReadUIntPtr(slot) |
| 2311 | print(" %s: %s" % ("ptr%d" % i, self.heap.FormatIntPtr(value))) |
| 2312 | slot += ptr_size |
| 2313 | i += 1 |
| 2314 | slot = mid_slot + ptr_size |
| 2315 | for i in range(4): |
| 2316 | value = self.reader.ReadUIntPtr(slot) |
| 2317 | print(" %s: %s" % ("codeObject%d" % i, self.heap.FormatIntPtr(value))) |
| 2318 | slot += ptr_size |
| 2319 | print(" message start: %s" % self.heap.FormatIntPtr(slot)) |
| 2320 | stack_start = end_slot + ptr_size |
| 2321 | print(" stack_start: %s" % self.heap.FormatIntPtr(stack_start)) |
| 2322 | (message_start, message) = self.FindFirstAsciiString(slot) |
| 2323 | self.FormatStackTrace(message, print_message) |
| 2324 | return stack_start |
| 2325 | |
| 2326 | def TryExtractOldStackTrace(self, slot, start, end, print_message): |
| 2327 | ptr_size = self.reader.MachinePointerSize() |
no test coverage detected