ETH智能合约的调试手段

一 调试手段

《1 变量查看

(1)变量可设置为public
address public withDrawAddress= 0x0;

(2)在rimix函数变量调试栏,点击变量同名按钮,即可查看当前值


image.png

《2 日志查看

(1)增加event事件的事件声明
event TransferWithDraw(uint balance);

(2)在要调用日志的地方,执行事件调用
TransferWithDraw(withDraw);

(3)执行函数时,remix在logs列,有TransferWithDraw日志输出语句


image.png

《3 使用remix的Debug功能

(1)在remix右侧,点击执行要执行的函数


image.png

(2)查看remix下方,有执行结果输出


image.png

(3)点击remix下半部分的“Debug”按钮,在右侧弹出Debug工具栏


image.png

主要关心当前的调试步进,还有当前的变量值。

二 完整实例代码

pragma solidity ^0.4.14;

contract testFundContract {
    address owner;
    address public withDrawAddress = 0x0;
    
    event TransferWithDraw(uint balance);
    
    function testFundContract() {
        owner = msg.sender;
    }
    
    function withDrawAddress(address a) {
        require(msg.sender == owner);
        withDrawAddress = a;
        
    }
    
    function addFund() payable returns (uint) {
        return this.balance;
    }
    
    function withDraw() {
        require(this.balance > 0);
        
        if (0x0  == withDrawAddress ){
            revert();
        }
        
        uint withDraw = this.balance;
        withDrawAddress.transfer(withDraw);
        TransferWithDraw(withDraw);
        
    }
    
}

推荐阅读更多精彩内容

  • pdf下载地址:Java面试宝典 第一章内容介绍 20 第二章JavaSE基础 21 一、Java面向对象 21 ...
    王震阳阅读 73,700评论 25 504
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 125,053评论 16 537
  • JMETER中文手册 1. 简介 Apache JMeter是100%纯java桌面应用程序,被设计用来测试客户端...
    捉虫师阅读 10,205评论 0 24
  • 家里新进成员,此PS非彼PS 想起小时候的小霸王其乐无穷 超级玛丽、魂斗罗、冒险岛、坦克大战…… 我一个都玩不明白...
    好好地飞阅读 18评论 0 0
  • 姓名:张献忠 日精进打卡第351天 【打卡始于2016.11.01持续于2017.10.19】 【知~学...
    张献忠阅读 53评论 0 0