`remixd` can be globally installed using the following command:
`npm install -g remixd`
You can install it just in the directory of your choice using this command:
Or just install it in the directory of your choice by removing the -g flag:
`npm install remixd`
Then `remixd -s <absolute-path-to-the-shared-folder> --remix-ide <your-remix-ide-URL-instance>` will start `remixd` and will share the given folder.
Then from the terminal, the command `remixd -s <absolute-path-to-the-shared-folder> --remix-ide <your-remix-ide-URL-instance>` will start `remixd` and will share the given folder with remix-ide.
For example, to sync your local folder to the official Remix IDE,
For example, to use remixd with Remix IDE ( and not the alpha version) use this command:
Make sure that if you use https://remix.ethereum.org (secure http) in the remixd command (like in the example above), that you are also pointing your browser to https://remix.ethereum.org and not to http://remix.ethereum.org (plain old insecure http). Or if you want to use http in the browser use http in the remixd command.
The folder is shared using a websocket connection between `Remix IDE`
There are two ways to start debugging, each one corresponds to a different use case.
* from the transaction log in the Terminal - use this when you are want to debug a "sucessful" transaction.
* from the Debugger - use this if you have a *transaction hash* or a *block number* with a *transaction index*.
* from the transaction log in the Terminal - use this when you want to debug a transaction.
* from the Debugger - use this if you have a *transaction hash*.
### Debug from the Transaction GUI -
Let's start with a basic contract (or replace this one by your own):
### Initiate Debugging from the transaction log in the Terminal
Let's start with a basic contract ( or replace this one by your own ) :
- create a blank file in the file explorer (by clicking the + icon) and give it a name.
- copy the code below.
- compile the code.
- click the Run & Deploy icon in the icon panel.
```
{.sourceCode .none} - RS why is this here?
pragma solidity >=0.5.1 <0.6.0;
contract Donation {
address owner;
@ -90,51 +88,49 @@ Click the debug button to start debugging it.

### From the Debugger
Before we get to the actual debugging tool, the next section show how to start debugging session directly from the Debugger.
### Initiate Debugging from the from the Debugger
Click the bug icon in the icon panel to get to the debugger in the side panel.
Click the bug icon in the icon panel to get to the debugger in the side panel. If you don't see the bug icon go to the plugin manager and activate the debugger.
If you don't see the bug icon, go to the plugin manager and activate the debugger.
You can start a debug session by providing either a `transaction hash`
or a `block number` and `transaction index`.
You can start a debug session by providing a `transaction hash`.
To find a transaction hash
1. go to a transaction in the terminal.
To find a transaction hash:
1. Go to a transaction in the terminal.
2. Click a line with a transaction - to exand the log.
3. Copy the transaction has locate there.
3. The transaction hash is there - copy it.


Then click on the `start debugging` button.
Then click in the debugger paste the hash and click on the `Start debugging` button.

Using the debugger
------------------

The debugger allows one to see detailed informations about the
transaction's execution. It uses the editor to display the
location in the source code where the current execution is.
The transaction panel displays basic information about the current
transaction.

The navigation part contains a slider and buttons that can be used to
step through the transaction execution.
From the left to the right:
step over back, step into back, step into forward, step over forward,
jump out (jump out of the current call), jump to the previous
breakpoint, jump to the next breakpoint.
### More explaination of what these buttons do.
1. Step Into
2. Step Over Into

11 panels give detailed information about the execution:
### Instructions

The Instructions panel displays the bytecode of the current executing
contract- with the current step highlighted.
@ -146,15 +142,11 @@ those that refers to the same expression.
### Solidity Locals

The Solidity Locals panel displays local variables associated with the
current context.
### Solidity State

The Solidity State panel displays state variables of the current
executing contract.
@ -173,7 +165,7 @@ These panels display low level informations about the execution:
### Reverted Transaction
A transaction could be `reverted` (because of an *out of gas exception* or
A transaction can be `reverted` (because of an *out of gas exception* or
Solidity `revert` statement or because of a low level exception).
It is important to be aware of the exception and to locate
@ -183,8 +175,6 @@ Remix will warn you when the execution throws an exception. The
`warning` button will jump to the last opcode before the exception
happened.

### Breakpoints
The two last buttons from the navigation area are used to jump either
@ -192,8 +182,6 @@ back to the previous breakpoint or forward to the next breakpoint.
Breakpoints can be added and removed by clicking on the line number in the *Editor*.

When using debug session with breakpoints, the execution will jump to the first
encountered breakpoint.
@ -202,9 +190,7 @@ 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:
If a function requires input parameters, well, you have to put them in.
If a function requires input parameters, well.. you gotta put them in.
## Inputting parameters

The input box tells you what type each parameter needs to be.
### Inputting parameters in the collapsed view
Numbers and addresses do not need to be wrapped in double quotes. Strings need to be wrapped.
(Inputting all the parameters in a single input box)
+ The input box tells you what type each parameter needs to be.
+ Numbers and addresses do not need to be wrapped in double quotes.
+ Strings need to be wrapped.
+ Parameters are separated by commas.
When using the input box for parameters in its "up" display, the parameters need to be separated by a comma. In the example above the "delegate" function has 3 parameters.
In the example above the "delegate" function has 3 parameters.
Clicking the 'down' caret brings you to the *Multi-param Manager* - where you can input the parameters one at a time.
### Inputting parameters in the expanded view
Clicking the 'down' caret brings you to the *Multi-param Manager* - where you can input the parameters one at a time. **Much less confusing!**

In the *Multi-param Manager*, strings do not need to be wrapped.
In the expanded view, strings do not need to be wrapped.
Clicking the clipboard icon will encode the inputs and will copy them. Only a valid set of inputs can be encoded.
<p>Then <codeclass="docutils literal notranslate"><spanclass="pre">remixd</span><spanclass="pre">-s</span><spanclass="pre"><absolute-path-to-the-shared-folder></span><spanclass="pre">--remix-ide</span><spanclass="pre"><your-remix-ide-URL-instance></span></code> will start <codeclass="docutils literal notranslate"><spanclass="pre">remixd</span></code> and will share the given folder.</p>
<p>For example, to sync your local folder to the official Remix IDE,
<p>Then from the terminal, the command <codeclass="docutils literal notranslate"><spanclass="pre">remixd</span><spanclass="pre">-s</span><spanclass="pre"><absolute-path-to-the-shared-folder></span><spanclass="pre">--remix-ide</span><spanclass="pre"><your-remix-ide-URL-instance></span></code> will start <codeclass="docutils literal notranslate"><spanclass="pre">remixd</span></code> and will share the given folder with remix-ide.</p>
<p>For example, to use remixd with Remix IDE ( and not the alpha version) use this command:
<p>Make sure that if you use https://remix.ethereum.org (secure http) in the remixd command (like in the example above), that you are also pointing your browser to https://remix.ethereum.org and not to http://remix.ethereum.org (plain old insecure http). Or if you want to use http in the browser use http in the remixd command.</p>
<p>The folder is shared using a websocket connection between <codeclass="docutils literal notranslate"><spanclass="pre">Remix</span><spanclass="pre">IDE</span></code>
and <codeclass="docutils literal notranslate"><spanclass="pre">remixd</span></code>.</p>
<p>Be sure the user executing <codeclass="docutils literal notranslate"><spanclass="pre">remixd</span></code> has read/write permission on the
<h2>Initiate Debugging from the transaction log in the Terminal<aclass="headerlink"href="#initiate-debugging-from-the-transaction-log-in-the-terminal"title="Permalink to this headline">¶</a></h2>
<p>Let’s start with a basic contract (or replace this one by your own):</p>
<ulclass="simple">
<li><p>create a blank file in the file explorer (by clicking the + icon) and give it a name.</p></li>
<li><p>copy the code below.</p></li>
<li><p>compile the code.</p></li>
<li><p>click the Run & Deploy icon in the icon panel.</p></li>
<p>Before we get to the actual debugging tool, the next section show how to start debugging session directly from the Debugger.</p>
</div>
<divclass="section"id="from-the-debugger">
<h2>From the Debugger<aclass="headerlink"href="#from-the-debugger"title="Permalink to this headline">¶</a></h2>
<p>Click the bug icon in the icon panel to get to the debugger in the side panel. If you don’t see the bug icon go to the plugin manager and activate the debugger.</p>
<p>You can start a debug session by providing either a <codeclass="docutils literal notranslate"><spanclass="pre">transaction</span><spanclass="pre">hash</span></code>
or a <codeclass="docutils literal notranslate"><spanclass="pre">block</span><spanclass="pre">number</span></code> and<codeclass="docutils literal notranslate"><spanclass="pre">transaction</span><spanclass="pre">index</span></code>.</p>
<h2>Initiate Debugging from the from the Debugger<aclass="headerlink"href="#initiate-debugging-from-the-from-the-debugger"title="Permalink to this headline">¶</a></h2>
<p>Click the bug icon in the icon panel to get to the debugger in the side panel.</p>
<p>If you don’t see the bug icon, go to the plugin manager and activate the debugger.</p>
<p>You can start a debug session by providing a<codeclass="docutils literal notranslate"><spanclass="pre">transaction</span><spanclass="pre">hash</span></code>.</p>
<p>To find a transaction hash:</p>
<olclass="simple">
<li><p>go to a transaction in the terminal.</p></li>
<li><p>Go to a transaction in the terminal.</p></li>
<li><p>Click a line with a transaction - to exand the log.</p></li>
<li><p>Copy the transaction has locate there.</p></li>
<li><p>The transaction hash is there - copy it.</p></li>
<p>Then click in the debugger paste the hash and click on the <codeclass="docutils literal notranslate"><spanclass="pre">Start</span><spanclass="pre">debugging</span></code> button.</p>
<h3>More explaination of what these buttons do.<aclass="headerlink"href="#more-explaination-of-what-these-buttons-do"title="Permalink to this headline">¶</a></h3>
<olclass="simple">
<li><p>Step Into</p></li>
<li><p>Step Over Into</p></li>
</ol>
<p>11 panels give detailed information about the execution:</p>
</div>
<divclass="section"id="instructions">
<h3>Instructions<aclass="headerlink"href="#instructions"title="Permalink to this headline">¶</a></h3>
<p>The Solidity State panel displays state variables of the current
executing contract.</p>
</div>
@ -336,30 +334,26 @@ every storage change of every modified contract)</p></li>
</div>
<divclass="section"id="reverted-transaction">
<h3>Reverted Transaction<aclass="headerlink"href="#reverted-transaction"title="Permalink to this headline">¶</a></h3>
<p>A transaction could be <codeclass="docutils literal notranslate"><spanclass="pre">reverted</span></code> (because of an <em>out of gas exception</em> or
<p>A transaction can be <codeclass="docutils literal notranslate"><spanclass="pre">reverted</span></code> (because of an <em>out of gas exception</em> or
Solidity <codeclass="docutils literal notranslate"><spanclass="pre">revert</span></code> statement or because of a low level exception).</p>
<p>It is important to be aware of the exception and to locate
where the exception is in the source code.</p>
<p>Remix will warn you when the execution throws an exception. The
<codeclass="docutils literal notranslate"><spanclass="pre">warning</span></code> button will jump to the last opcode before the exception
<liclass="toctree-l3"><aclass="reference internal"href="#inputting-parameters-in-the-collapsed-view">Inputting parameters in the collapsed view</a></li>
<liclass="toctree-l3"><aclass="reference internal"href="#inputting-parameters-in-the-expanded-view">Inputting parameters in the expanded view</a></li>
@ -217,20 +221,31 @@ But this transaction does not accept Ether.</p></li>
<p>For more information see more about <aclass="reference external"href="http://solidity.readthedocs.io/en/develop/miscellaneous.html?highlight=pure#modifiers">Solidity
modifier</a>
.</p>
<p>If a function requires input parameters, well, you have to put them in.</p>
<p>If a function requires input parameters, well.. you gotta put them in.</p>
</div>
<divclass="section"id="inputting-parameters">
<h2>Inputting parameters<aclass="headerlink"href="#inputting-parameters"title="Permalink to this headline">¶</a></h2>
<p>The input box tells you what type each parameter needs to be.</p>
<p>Numbers and addresses do not need to be wrapped in double quotes. Strings need to be wrapped.</p>
<p>When using the input box for parameters in its “up” display, the parameters need to be separated by a comma. In the example above the “delegate” function has 3 parameters.</p>
<p>Clicking the ‘down’ caret brings you to the <em>Multi-param Manager</em> - where you can input the parameters one at a time.</p>
<h3>Inputting parameters in the collapsed view<aclass="headerlink"href="#inputting-parameters-in-the-collapsed-view"title="Permalink to this headline">¶</a></h3>
<p>(Inputting all the parameters in a single input box)</p>
<ulclass="simple">
<li><p>The input box tells you what type each parameter needs to be.</p></li>
<li><p>Numbers and addresses do not need to be wrapped in double quotes.</p></li>
<li><p>Strings need to be wrapped.</p></li>
<li><p>Parameters are separated by commas.</p></li>
</ul>
<p>In the example above the “delegate” function has 3 parameters.</p>
<h3>Inputting parameters in the expanded view<aclass="headerlink"href="#inputting-parameters-in-the-expanded-view"title="Permalink to this headline">¶</a></h3>
<p>Clicking the ‘down’ caret brings you to the <em>Multi-param Manager</em> - where you can input the parameters one at a time. <strong>Much less confusing!</strong></p>
The best documentation about how to build a plugin is currently in [the readme of remix-plugin repo](https://github.com/ethereum/remix-plugin). Please go [here](https://github.com/ethereum/remix-plugin) to learn all about it.
`remixd` can be globally installed using the following command:
`npm install -g remixd`
You can install it just in the directory of your choice using this command:
Or just install it in the directory of your choice by removing the -g flag:
`npm install remixd`
Then `remixd -s <absolute-path-to-the-shared-folder> --remix-ide <your-remix-ide-URL-instance>` will start `remixd` and will share the given folder.
Then from the terminal, the command `remixd -s <absolute-path-to-the-shared-folder> --remix-ide <your-remix-ide-URL-instance>` will start `remixd` and will share the given folder with remix-ide.
For example, to sync your local folder to the official Remix IDE,
For example, to use remixd with Remix IDE ( and not the alpha version) use this command:
Make sure that if you use https://remix.ethereum.org (secure http) in the remixd command (like in the example above), that you are also pointing your browser to https://remix.ethereum.org and not to http://remix.ethereum.org (plain old insecure http). Or if you want to use http in the browser use http in the remixd command.
The folder is shared using a websocket connection between `Remix IDE`
There are two ways to start debugging, each one corresponds to a different use case.
* from the transaction log in the Terminal - use this when you are want to debug a "sucessful" transaction.
* from the Debugger - use this if you have a *transaction hash* or a *block number* with a *transaction index*.
* from the transaction log in the Terminal - use this when you want to debug a transaction.
* from the Debugger - use this if you have a *transaction hash*.
### Debug from the Transaction GUI -
Let's start with a basic contract (or replace this one by your own):
### Initiate Debugging from the transaction log in the Terminal
Let's start with a basic contract ( or replace this one by your own ) :
- create a blank file in the file explorer (by clicking the + icon) and give it a name.
- copy the code below.
- compile the code.
- click the Run & Deploy icon in the icon panel.
```
{.sourceCode .none} - RS why is this here?
pragma solidity >=0.5.1 <0.6.0;
contract Donation {
address owner;
@ -90,51 +88,49 @@ Click the debug button to start debugging it.

### From the Debugger
Before we get to the actual debugging tool, the next section show how to start debugging session directly from the Debugger.
### Initiate Debugging from the from the Debugger
Click the bug icon in the icon panel to get to the debugger in the side panel.
Click the bug icon in the icon panel to get to the debugger in the side panel. If you don't see the bug icon go to the plugin manager and activate the debugger.
If you don't see the bug icon, go to the plugin manager and activate the debugger.
You can start a debug session by providing either a `transaction hash`
or a `block number` and `transaction index`.
You can start a debug session by providing a `transaction hash`.
To find a transaction hash
1. go to a transaction in the terminal.
To find a transaction hash:
1. Go to a transaction in the terminal.
2. Click a line with a transaction - to exand the log.
3. Copy the transaction has locate there.
3. The transaction hash is there - copy it.


Then click on the `start debugging` button.
Then click in the debugger paste the hash and click on the `Start debugging` button.

Using the debugger
------------------

The debugger allows one to see detailed informations about the
transaction's execution. It uses the editor to display the
location in the source code where the current execution is.
The transaction panel displays basic information about the current
transaction.

The navigation part contains a slider and buttons that can be used to
step through the transaction execution.
From the left to the right:
step over back, step into back, step into forward, step over forward,
jump out (jump out of the current call), jump to the previous
breakpoint, jump to the next breakpoint.
### More explaination of what these buttons do.
1. Step Into
2. Step Over Into

11 panels give detailed information about the execution:
### Instructions

The Instructions panel displays the bytecode of the current executing
contract- with the current step highlighted.
@ -146,15 +142,11 @@ those that refers to the same expression.
### Solidity Locals

The Solidity Locals panel displays local variables associated with the
current context.
### Solidity State

The Solidity State panel displays state variables of the current
executing contract.
@ -173,7 +165,7 @@ These panels display low level informations about the execution:
### Reverted Transaction
A transaction could be `reverted` (because of an *out of gas exception* or
A transaction can be `reverted` (because of an *out of gas exception* or
Solidity `revert` statement or because of a low level exception).
It is important to be aware of the exception and to locate
@ -183,8 +175,6 @@ Remix will warn you when the execution throws an exception. The
`warning` button will jump to the last opcode before the exception
happened.

### Breakpoints
The two last buttons from the navigation area are used to jump either
@ -192,8 +182,6 @@ back to the previous breakpoint or forward to the next breakpoint.
Breakpoints can be added and removed by clicking on the line number in the *Editor*.

When using debug session with breakpoints, the execution will jump to the first
encountered breakpoint.
@ -202,9 +190,7 @@ 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:
If a function requires input parameters, well, you have to put them in.
If a function requires input parameters, well.. you gotta put them in.
## Inputting parameters

The input box tells you what type each parameter needs to be.
### Inputting parameters in the collapsed view
Numbers and addresses do not need to be wrapped in double quotes. Strings need to be wrapped.
(Inputting all the parameters in a single input box)
+ The input box tells you what type each parameter needs to be.
+ Numbers and addresses do not need to be wrapped in double quotes.
+ Strings need to be wrapped.
+ Parameters are separated by commas.
When using the input box for parameters in its "up" display, the parameters need to be separated by a comma. In the example above the "delegate" function has 3 parameters.
In the example above the "delegate" function has 3 parameters.
### Inputting parameters in the expanded view
Clicking the 'down' caret brings you to the *Multi-param Manager* - where you can input the parameters one at a time. **Much less confusing!**

In the *Multi-param Manager*, strings do not need to be wrapped.
In the expanded view, strings do not need to be wrapped.
Clicking the clipboard icon will encode the inputs and will copy them. Only a valid set of inputs can be encoded.