Как отладить контракт в браузере-солидности

contract users{
struct User{
    uint id;
    string str;
}
User [] public adds;
function del(){
    delete adds;
}
function delElem(uint i){
    delete adds[i];
}
function add(uint id,string cc){
    adds.push(User(id,cc));
}
function getLength()constant returns(uint){
    return adds.length;
}}

как отладить этот контракт в описании ссылки здесь, может ли точка останова быть действительной?

Ответы (1)

Отладчика Solidity нет, есть только отладчик EVM. Это одна из вкладок справа. Это позволяет вам выполнять инструкции EVM и видеть состояние памяти и хранилища. Для отладки кода Solidity я предлагаю вместо этого добавить события. Например:

contract users{   
event LogThis(uint arg);
struct User{
    uint id;
    string str;
}
User [] public adds;
function del(){
    delete adds;
}
function delElem(uint i){
    delete adds[i];
}
function add(uint id,string cc){
    adds.push(User(id,cc));
}
function getLength()constant returns(uint){
    LogThis(adds.length);
    return adds.length;
}}

Вы увидите это событие при выполнении транзакций.

Обратите внимание, что ни одно событие не будет выполняться, если оно есть throwв цепочке выполнения. Таким образом, события являются "друзьями хорошей погоды".