> On Jan 16, 2015, at 2:21 PM, Zachary Turner <ztur...@google.com> wrote: > > On Fri Jan 16 2015 at 1:53:00 PM Greg Clayton <gclay...@apple.com> wrote: > Please trust that we know what we are doing when it comes to single stepping. > I am glad you are thinking about how things are done, but just be sure think > about the problem in a wider scope than "the code I am thinking about is > linear" and think about all sorts of single stepping and what you would > expect to happen. > I'm not not-trusting that you know what you're doing. I'm trying to > understand it for myself, so that I can make the necessary changes to get it > working on Windows. > > On the other hand, Windows does have plenty of different rules and > assumptions when it comes to how it generates code. So while I'm confident > that you guys have thought about it and made something that works well within > the context of non-Windows, it's a given that some of the functionality is > going to be broken when the assumptions change. Not because you didn't know > what you were doing, but because the code wasn't designed with these > assumptions in mind. Otherwise it would have just already worked and this > thread would have never been created :) > > So it's not enough for me to just say "I have to trust that it works, > therefore I must be doing something wrong", but I also need to understand the > architecture and the details well enough to be able figure out if it doesn't > work because of some fundamental differences in Windows vs. non-Windows, or > if it doesn't work because I have a bug somewhere in my process plugin, or > something else. > > One of the questions I keep asking myself is: Why, when using one of the > native Windows debuggers such as MSVC or WinDbg, if I step over a call, does > it always work even if the called function has no debug info, no unwind info, > and uses FPO? > > Maybe it's related to them having better function bounds in their COFF > parser, as you suggested. I'm going to look into that, but I just want to > re-emphasize that none of my posts, including this one, are intended to > second guess anyone's decisions. But at the same time it's only natural to > expect that since many of the assumptions were made without Windows in mind, > they may prove to be slightly wrong. > > There's not very many detailed design documents about how things work, and in > certain areas code documentation is sparse. So the purpose of me asking is > simply to understand how it works. > > Hope this makes sense.
Sure. I think we take a lot of these complexities for granted at this point. It's fun to be reminded from time to time that this stuff is a little above flipping burgers... None of us here have worked on MSVC, so I don't know if they use fundamentally different algorithms for stepping. But there really aren't that many different ways you could do it, at least that I can think of. If I had to guess, I would bet they make their unwinder really smart, because there are so many clients of that, and if that works well, then stepping is pretty straight-forward. And then given the age of the tools they probably have a bunch of special cases layered on top to make things work beautifully. Jim _______________________________________________ lldb-dev mailing list lldb-dev@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev