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

前几天在本地环境下调试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(这里需要注意不要讲true单词拼写错误,不然会导致重启容器不成功,

重启失败通过:docker logs 容器ID日志,查找失败原因。)

 

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



作者:liuchungui
链接:https://www.jianshu.com/p/411f7ef3c904

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值