美文网首页
EOS开发环境下eosio_assert显示详细错误信息

EOS开发环境下eosio_assert显示详细错误信息

作者: liuchungui | 来源:发表于2018-10-28 22:12 被阅读0次

    前几天在本地环境下调试EOS代码时,运行代码之后只有简简单单的"Error 3050003: eosio_assert_meesage"的输出,无法定位到哪个eosio_assert报出的错误。于是,查找了一番,解决之后记录下。

    首先,在启动Docker的时候,加上--verbose-http-errors

    --verbose-http-errors是配置在keosd命令下的参数

    docker run --name eosio   --publish 7777:7777   --publish 127.0.0.1:5555:5555   --volume /Users/liuchungui/Sites/test/eos/constracts:/Users/liuchungui/Sites/test/eos/constracts   --detach   eosio/eos   /bin/bash -c   "keosd --http-server-address=0.0.0.0:5555 --verbose-http-errors & exec nodeos -e -p eosio --plugin eosio::producer_plugin --plugin eosio::history_plugin --plugin eosio::chain_api_plugin --plugin eosio::history_plugin --plugin eosio::history_api_plugin --plugin eosio::http_plugin -d /mnt/dev/data --config-dir /mnt/dev/config --http-server-address=0.0.0.0:7777 --access-control-allow-origin=* --contracts-console --http-validate-host=false --filter-on='*'"
    

    然后,进入docker中,修改配置,开启verbose-http-errors

    # 安装vim
    apt-get update
    apt-get install vim
    
    # 修改配置,配置文件是/mnt/dev/config/config.ini
    vim /mnt/dev/config/config.ini
    

    找到verbose-http-errors,设置为true


    image.png

    最后,重启docker,验证

    需要重启docker,才能让配置生效

    docker restart eosio
    

    然后就能在终端和浏览器中看到详细的错误信息了。


    image.png

    浏览器中:


    image.png

    与之对应的合约代码:

    void helloworld::hello(account_name user) {
        require_auth(user);
        eosio_assert(1 > 2, "hell error");
        print("hello");
    }
    

    总结

    步骤很简单,但是正是获取了这些信息,后面才能更顺畅进行。不过,今天在pyeos这个库上面找到如何Debug合约代码,详情请见Debugging With C++ Smart Contract

    相关文章

      网友评论

          本文标题:EOS开发环境下eosio_assert显示详细错误信息

          本文链接:https://www.haomeiwen.com/subject/mjomtqtx.html