The Visual Debugger is one of the tools people love the most. Instead of wasting countless hours debugging transactions, you can use the Visual Debugger so you can focus more on buidling and less on scratching your head.
The level of detail present here doesn't exist anywhere else and reduces development time by orders of magnitude.
Go to the Transactions tab in the left navigation bar and click on a transaction from the list, or paste the transaction hash you want into the top Explorer bar:
By clicking on Contracts (or Addresses) on the left we can see all of the contracts that have been involved in this transaction:
When you click on the Debugger tab, you will see the following:
On the top right you will see the code that was executed, below are the listed parameters for code execution and inputs that were passed into the function, and on the left we have the Execution and Stack Traces.
Execution Trace has two modes you can use - Function Trace and Call Trace.
By default it is set to Function Trace, which means it will show all external and internal calls that happened in this transaction.
For a better overview of key calls you can switch it to Call Trace, which shows only external calls that happened in the transaction.
Now let's take one function and break it down further:
For example the function multicall has a single input labeled data which is shown below:
On the left you will see a list of all the function that were called in this transaction which are further broken down in the order of execution in the Stack Trace:
You can search for the exact term in the code either by double clicking a word and searching for it using the markup to the right, or by hitting CTRL+F to open up the integrated search bar:
While we debug our transaction, the Stack Trace will show all of the functions that are being executed in each step:
When in Transaction overview, Events tab will show you all of the events emitted in this transaction, with options to filter them out by event name or contract/address:
Decoded State Changes
State Changes allows us to see all of the variables that were changed/updated during the course of the transaction:
Gas Profiler shows you the most detailed view of how your transaction spent gas, down to every single function call and the amount of gas spent by it: