[Lldb-commits] [lldb] [lldb] Implement basic support for reverse-continue (PR #99736)

via lldb-commits lldb-commits at lists.llvm.org
Mon Jul 22 15:43:57 PDT 2024


jimingham wrote:



> On Jul 22, 2024, at 2:54 PM, rocallahan ***@***.***> wrote:
> 
> 
> @rocallahan commented on this pull request.
> 
> In lldb/source/Target/Process.cpp <https://github.com/llvm/llvm-project/pull/99736#discussion_r1687180167>:
> 
> > @@ -3264,6 +3266,11 @@ Status Process::PrivateResume() {
>    // filters before resuming.
>    UpdateAutomaticSignalFiltering();
>  
> +  if (m_last_run_direction != direction) {
> I'm a bit worried that in general thread plans have a lot of complexity, and adding more complexity by allowing multiple stacked plans with different directions might be bad enough for maintainability that it's overall a bad idea.
> 
I hope that's not true.  I don't think we need to have the thread plans have some pinning to the time-line of the user's actions.  For instance, if you were doing a "forward-next", hit a breakpoint and did some forward and backwards stepping, then did a backwards continue to a point where that thread no longer existed, then a forward continue back to where you started from, we do NOT need to preserve the next behavior at that point.  However, so long as the forward and backward operations always happen under the frame we were next-ing on, we should be able to preserve the behavior in that case. 

It shouldn't be too unnatural, every time we stop we do a sanity check on the plans to see if they are still relevant before we return control to the user.  For instance, if you were nexting over a call that threw an exception, which was caught above the frame you were `nexting` in we have to do the same sort of "is stale" pruning.  As long as we're appropriately firm about pruning plans as they stop being relevant, this should be manageable.

Jim


>> Reply to this email directly, view it on GitHub <https://github.com/llvm/llvm-project/pull/99736#discussion_r1687180167>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/ADUPVW3VEF6SXZPEBS5W5KDZNV5RDAVCNFSM6AAAAABLFTBQAKVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZDCOJSGYYTGNRYGA>.
> You are receiving this because you are on a team that was mentioned.
> 



https://github.com/llvm/llvm-project/pull/99736


More information about the lldb-commits mailing list