-
Notifications
You must be signed in to change notification settings - Fork 995
feat: Debug RPC- call tracer #9072
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
feat: Debug RPC- call tracer #9072
Conversation
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
…action Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
…ctory Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
…legate_call Signed-off-by: Usman Saleem <usman@usmans.info>
…legate_call Signed-off-by: Usman Saleem <usman@usmans.info>
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.
Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.
…legate_call Signed-off-by: Usman Saleem <usman@usmans.info>
…legate_call Signed-off-by: Usman Saleem <usman@usmans.info>
…legate_call Signed-off-by: Usman Saleem <usman@usmans.info>
…legate_call Signed-off-by: Usman Saleem <usman@usmans.info>
Signed-off-by: Usman Saleem <usman@usmans.info>
…legate_call Signed-off-by: Usman Saleem <usman@usmans.info>
…legate_call Signed-off-by: Usman Saleem <usman@usmans.info>
…legate_call Signed-off-by: Usman Saleem <usman@usmans.info>
…legate_call Signed-off-by: Usman Saleem <usman@usmans.info>
macfarla
left a comment
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.
can we have a changelog entry included for this
…legate_call Signed-off-by: Usman Saleem <usman@usmans.info>
Dismiss review as requested changes implemented.
…legate_call Signed-off-by: Usman Saleem <usman@usmans.info>
feat: Implement callTracer for debug_trace* methods Major refactoring of the debug tracing infrastructure to support the callTracer type with Geth-compatible output. Key changes: - Refactor DebugCallTracerResult to support hierarchical call stack - Introduce TracerType enum and TracerOptions simplification - Rename StructLogTracerConfig to OpCodeTracerConfig for clarity - Rename tracer result classes for consistency (OpCodeLoggerTracerResult, etc.) - Implement CallTracerResultConverter for converting trace frames to call traces - Add TraceFrame Builder pattern with precompile input/output fields - Handle precompile calls with correct gas calculation and input/output - Support SELFDESTRUCT, CREATE/CREATE2 operations in call traces - Handle exceptional halts and soft failures with proper error descriptions - Add feature flag for extra debug tracers - Add comprehensive unit and integration tests for callTracer --------- Signed-off-by: Usman Saleem <usman@usmans.info> Signed-off-by: Ali Zhagparov <alijakparov.kz@gmail.com>
feat: Implement callTracer for debug_trace* methods Major refactoring of the debug tracing infrastructure to support the callTracer type with Geth-compatible output. Key changes: - Refactor DebugCallTracerResult to support hierarchical call stack - Introduce TracerType enum and TracerOptions simplification - Rename StructLogTracerConfig to OpCodeTracerConfig for clarity - Rename tracer result classes for consistency (OpCodeLoggerTracerResult, etc.) - Implement CallTracerResultConverter for converting trace frames to call traces - Add TraceFrame Builder pattern with precompile input/output fields - Handle precompile calls with correct gas calculation and input/output - Support SELFDESTRUCT, CREATE/CREATE2 operations in call traces - Handle exceptional halts and soft failures with proper error descriptions - Add feature flag for extra debug tracers - Add comprehensive unit and integration tests for callTracer --------- Signed-off-by: Usman Saleem <usman@usmans.info> Signed-off-by: stefan.pingel@consensys.net <stefan.pingel@consensys.net>
PR description
This PR is built on top of #8960. It add fixes for DELEGATECALL, Precompiles, SELFDESTRUC, Calls without RETURN and soft failures such as insufficient balance to transfer. It also refactors utility methods from CallTracerResultConverter class for easier readability and testability.
It bring integration tests from #9091. These integration cases were generated running against Geth instance.
Caution
This feature is enabled by using flag:
--Xenable-extra-debug-tracers=true. Its disabled by default as it is experimental.Note
Tracer config options specific to
callTracer, such asonlyTopCall:true, are not yet supportedSummary of Changes per file (Generated by Copilot)
Example Call for debug_trace* methods
Fixed Issue(s)
#8326