EOS開發環境下eosio_assert顯示詳細錯誤資訊
阿新 • • 發佈:2018-12-26
前幾天在本地環境下除錯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