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;
}