For the purpose of this tutorial, we will run the JavaScriptVM
(that’s the default mode when you don’t use Remix with Mist or
Metamask). This simulates a custom blockchain. You could do the same
using a proper backend node.

Now, let’s deploy the contract:

Right panel / Red button Create

Then we should call the Donate function (that will send Ether to the
contract).

Let’s set the amount of Ether:

Right panel / second tab from the left - fill in the ´´value´´ input (´1
ether´ for instance)

Then click on Donate. As we are using the JavaScriptVM, everything
goes almost instantly.

Remix displays also some information related to each transaction result.
In the terminal, the transaction is logged and you can start debugging
it.

The Instructions panel displays the bytecode of the current executing
contract- with the current step highlighted.

Important note: When this panel is hidden, the slider will have a
courser granularity and only stop at expression boundaries, even if they
are compiled into multiple EVM instructions. When the panel is
displayed, it will be possible to step over every instruction, even
those that refers to the same expression.

The two last buttons from the navigation area are used to jump either
back to the previous breakpoint or forward to the next breakpoint.

Breakpoints can be added and removed by clicking on the line number.

When a debug session is started, the execution will jump to the first
encountered breakpoint.

Important note: If you add a breakpoint to a line that declares a
variable, it might be triggered twice: Once for initializing the
variable to zero and second time for assigning the actual value. As an
example, assume you are debugging the following contract: