abstract private TrySpecialUnwind ( StackFrame last_frame, TargetMemoryAccess memory ) : StackFrame | ||
last_frame | StackFrame | |
memory | TargetMemoryAccess | |
return | StackFrame |
protected StackFrame UnwindStack(StackFrame frame, TargetMemoryAccess memory) { if ((frame.TargetAddress < StartAddress) || (frame.TargetAddress > EndAddress)) { return(null); } StackFrame new_frame; try { new_frame = Architecture.TrySpecialUnwind(frame, memory); if (new_frame != null) { return(new_frame); } } catch { } try { if (frame_reader != null) { new_frame = frame_reader.UnwindStack(frame, memory, Architecture); if (new_frame != null) { return(new_frame); } } if (eh_frame_reader != null) { new_frame = eh_frame_reader.UnwindStack(frame, memory, Architecture); if (new_frame != null) { return(new_frame); } } } catch { return(null); } return(null); }