Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support taking memory snapshots #40

Open
travitch opened this issue Jun 11, 2020 · 0 comments
Open

Support taking memory snapshots #40

travitch opened this issue Jun 11, 2020 · 0 comments
Labels
enhancement New feature or request
Milestone

Comments

@travitch
Copy link
Contributor

We should have a method to take a memory snapshot when the simulator is stopped at a breakpoint. This would let us have a collection of named memory snapshots that we could use to drive other symbolic execution tasks.

As an example workflow:

  1. The user could being symbolic execution at main and run up to a breakpoint
  2. They could then capture (and name) that memory state
  3. Next, they can select a new function to begin execution with the saved memory state

This may not correspond to a real program execution, but it could be a very useful mechanism for asking targeted questions. This would be much more tractable as a method for populating memory states than handling it manually. Instead of starting from main, a user could also set up various custom entry points to construct memory states with desired properties, entirely using the host language.

Since Crucible data structures are all immutable, we don't need to worry about captured memory states becoming invalidated.

Note: there are some design questions here. We probably want to capture all of the Crucible globals, but is that enough for all backends? It would work for LLVM, but we need to look at the implications for go/java/rust.

@travitch travitch added the enhancement New feature or request label Jun 11, 2020
@travitch travitch added this to the Demo 2 milestone Jun 11, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant