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

Method output_stack_trace

deps/v8/tools/grokdump.py:3005–3052  ·  view source on GitHub ↗
(self, f, slot, start, end, print_message)

Source from the content-addressed store, hash-verified

3003 return start
3004
3005 def output_stack_trace(self, f, slot, start, end, print_message):
3006 ptr_size = self.reader.MachinePointerSize()
3007 assert self.reader.ReadUIntPtr(slot) & 0xFFFFFFFF == STACK_TRACE_MARKER
3008 # Look for the mid marker after the start slot.
3009 mid_slot = self.reader.FindPtr(STACK_TRACE_MID_MARKER, start + ptr_size,
3010 start + ptr_size * 100)
3011 if not mid_slot:
3012 return self.output_old_stack_trace(f, slot, start, end, print_message)
3013 end_search = mid_slot + (32 * 1024) + (4 * ptr_size)
3014 end_slot = self.reader.FindPtr(STACK_TRACE_END_MARKER, end_search,
3015 end_search + ptr_size * 512)
3016 if not end_slot:
3017 return start
3018
3019 f.write("<h3>PushStackTraceAndDie Stack Message (start=%s):</h3>" %
3020 self.format_address(slot))
3021 slot += ptr_size
3022 value = self.reader.ReadUIntPtr(slot)
3023 f.write(f"<b>isolate</b>: {self.format_address(value)}<br>")
3024 slot += ptr_size
3025 i = 0
3026 while slot < mid_slot:
3027 value = self.reader.ReadUIntPtr(slot)
3028 try:
3029 obj = self.format_object(value)
3030 except Exception as e:
3031 obj = str(e)
3032 f.write(f"<b>ptr{i}</b>: {self.format_address(value)} {obj}<br>")
3033 slot += ptr_size
3034 i += 1
3035 slot = mid_slot + ptr_size
3036 for i in range(4):
3037 value = self.reader.ReadUIntPtr(slot)
3038 try:
3039 obj = self.format_object(value)
3040 except Exception as e:
3041 obj = str(e)
3042 f.write(f"<b>codeObject{i}</b>: {self.format_address(value)} {obj}<br>")
3043 slot += ptr_size
3044 f.write("<b>message start</b>: %s<br>" % self.format_address(slot))
3045 stack_start = end_slot + ptr_size
3046 f.write("<b>stack_start</b>: %s<br>" % self.format_address(stack_start))
3047 (message_start, message) = self.padawan.FindFirstAsciiString(slot)
3048 if print_message and message is not None:
3049 f.write("<a href='#eom'>Scroll to end of message...</a><br>")
3050 self.output_stack_trace_message(f, message)
3051 f.write("<span id=eom></span>")
3052 return stack_start
3053
3054 def output_old_stack_trace(self, f, slot, start, end, print_message):
3055 ptr_size = self.reader.MachinePointerSize()

Callers 1

Calls 11

format_addressMethod · 0.95
format_objectMethod · 0.95
strFunction · 0.85
ReadUIntPtrMethod · 0.80
FindPtrMethod · 0.80
FindFirstAsciiStringMethod · 0.80
rangeFunction · 0.50
MachinePointerSizeMethod · 0.45
writeMethod · 0.45

Tested by

no test coverage detected