前几天在本地环境下调试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。
网友评论