Thanks, I wasn't aware of the distinction.<br><br><span style="line-height:19.7999992370605px">As an aside, Windows comes with an </span><a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms680650%28v=vs.85%29.aspx" style="line-height:19.7999992370605px">API</a><span style="line-height:19.7999992370605px"> that does its own unwinding.  It works quite well and is aware of many minor details such as Microsoft specific compiler flags that affect the way code is generated, and also works (somewhat) in the presence of FPO, no symbols, and other edge cases.  If I wanted to make unwinding on Windows use this API, what would be the best way to fit that in to LLDB?  In theory it would replace UnwindLLDB for any situation where the binary was using a Microsoft ABI.</span><br><br><div class="gmail_quote">On Thu Jan 15 2015 at 4:36:39 PM <<a href="mailto:jingham@apple.com">jingham@apple.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
> On Jan 15, 2015, at 4:18 PM, Zachary Turner <<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>> wrote:<br>
><br>
> Which is unfortunate, because it seems to be needed even for basic stepping to work, like step over.  Originally I was just trying to implement stepping, and that's how I ran into this issue.  So that brings me to a related question.  Why is step over as complicated as it is?  It seems to me like step over can be implemented by disassembling 1 opcode, adding the size of the opcode to the current pc, and having the ThreadPlan::ShouldStop always return false unless the pc is equal to old_pc + size_of_opcode.<br>
><br>
<br>
You are describing "thread step-inst".  That should pretty much always work regardless of unwinder, etc.<br>
<br>
Source step over, as Jason said, is much more complicated.<br>
<br>
Jim</blockquote></div>