feat: Debug RPC- call tracer #9072
Merged
usmansaleem merged 281 commits intobesu-eth:mainfrom Dec 5, 2025
Merged
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>
…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
reviewed
Dec 3, 2025
Contributor
macfarla
left a comment
There was a problem hiding this comment.
can we have a changelog entry included for this
Gabriel-Trintinalia
approved these changes
Dec 4, 2025
…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>
AliZDev-v0
pushed a commit
to AliZDev-v0/besu
that referenced
this pull request
Dec 10, 2025
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>
pinges
pushed a commit
to pinges/besu
that referenced
this pull request
Dec 15, 2025
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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