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


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显示详细错误信息)