Skip to content

[Feature request] Watch window snapshot/freeze. #919

Description

@GlebKonstPub

Summary

Add the ability to save/snapshot/freeze values in the watch window to compare them between program states. This should be easy to implement and could improve debugging a lot.

Reasoning

Sometimes we deal with huge third-party classes, and observing value changes between program states can be the fastest way to understand what is going on. Simple highlighting of changed values is not enough, because a class can have literally hundreds of moving values inside, and you need to find the one or two that actually correspond to the changes you made to the program's state.

What I propose

Add a "snapshot" button to the watch window that will create an additional column, saving the currently displayed values. With it, the user will be able to change the program state and observe the changes not just by noticing that a value changed, but also by seeing the character of that change (old vs. new value side by side).

As far as I know, no mainstream debugger has this exact feature. A snapshot/freeze feature would still be extremely useful for understanding third-party code — especially when stepping through it in a debugger is simpler than digging through thousands of lines of highly templated, interface-heavy C++ OOP code.

And for raddbg this should be a really easy-to-implement feature.

Possible next steps

  • Saving frozen values between sessions is not necessary for this feature to work, but would be a possible improvement.
  • The memory() view rule in the watch window can be dumped into a file, since it has not only a start pointer, but also a fixed size parameter.
  • Saving multiple snapshots could be useful too, though it's not a deal breaker — just another possible improvement.

These are absolutely unnecessary, just something that other people might find lacking in a bare-bones implementation. But I want to emphasize that even the most basic implementation of this feature would be a game changer for exploratory debugging.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    DebuggerPertains to the debugger.Feature RequestA request for a new feature or improvement.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions