-
Notifications
You must be signed in to change notification settings - Fork 1k
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
Add ITraceDebugPlugin infrastructure #1724
Conversation
Note, build failure after 9c73550 is unrelated to code change. Github workflow was unable to download dotnet-format |
Note, TestReVerifyTopUnverifiedTransactionsIfNeeded passes locally and is not related to my code change as far as I can tell |
{ | ||
public interface ITraceDebugPlugin | ||
{ | ||
bool ShouldTrace(Header header, Transaction tx); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is not enough with GetSink
? it's needed ShouldTrace
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The idea here is that you don't likely want to trace every tx. For example, if I deploy a contract to mainnet, I can also deploy a mainnet node with the debugger plugin to capture every run of my contract for later analysis if need be. But I don't want to capture every tx - just mine. This API allows me to cleanly separate the logic that decides if a given tx should be traced vs. the logic that does the tracing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But this logic can be done in the plugin, if you don't want to trace this TX, just ignore it, isn't it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, it could be done other ways. I feel this approach provides more flexibility in case we want to support multiple tracers for a single transaction.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What do you think @erikzhang ?
I think the only method that And the |
@erikzhang Could you please provide more context around what your goal is with this design? I would like to understand your thinking better. |
In this way, we can extend the |
FYI, I'm leaving this PR open for now, but #1758 is likely going to make this PR obsolete |
Closing in favor of #1758 |
This PR adds infrastructure to capture trace information during execution in order to enable Time Travel Debugging