labath added a comment.

In D58564#1410729 <https://reviews.llvm.org/D58564#1410729>, @JDevlieghere 
wrote:

> In D58564#1410213 <https://reviews.llvm.org/D58564#1410213>, @labath wrote:
>
> > I am sorry that I won't have much time to review this in the next couple of 
> > weeks, but I don't think this is a good direction here. I don't see how 
> > this will interact with the SB API recorder, specifically with things like 
> > SBCommandInterpreter::HandleCommand, and ::HandleCommandsFromFile. The 
> > thing I would expect to see is that SB recorder captures the input of those 
> > commands (for a somewhat broad interpretation of "capture") during 
> > recording, and then substitute this during replay. That way the 
> > CommandInterpreter class would not need (almost?) any modifications.
>
>
> It’s been a while but wasn’t this exactly what you proposed in the other 
> differential? How would you capture commands that are entered interactively 
> (through RunCommqndInterpreter)?
>
> Anyway, I don’t believe this is a concern. The provider here only capture 
> what’s entered interactively, hence the flag. Replaying the API call should 
> work exactly as expected. I’ll double check later today.


I have to admit I haven't looked at this in detail, but the thing I'm missing 
here is the connection between commands and API calls. If we take 
RunCommandInterpreter, for instance, you can see that the lldb driver invokes 
this function three times. How do you ensure the "right" commands get replayed 
as a part of the API call?

If you look at the driver more closely, you'll see that each call to 
RunCommandInterpreter is preceeded by a call to SetInputFileHandle. I don't 
have this idea fully baked, but the way I'd try to approach this is to have 
each SetInputFileHandle create a new buffer where the commands will be stored 
in. Then as the commands are being processed (in RunCommandInterpreter), they 
would be added into this buffer. Then, when replaying you would know that you 
only should replay the commands from the given buffer.

I'd also probably try to capture these commands at a slightly lower level, 
because I am hoping that this will allow us to get rid of the add_to_reproducer 
flag. Ideally, this should fall out naturally due to the different source the 
commands are coming from -- the commands executed through the `HandleCommand` 
API would be captured at the SB boundary, and the "interactive" commands would 
be captured by whoever invokes the command interpreter in interactive mode.

(I have no idea how easy it is to achieve this, but that's how I'd approach 
this.)


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D58564/new/

https://reviews.llvm.org/D58564



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to