1. 程式人生 > >EOS開發環境下eosio_assert顯示詳細錯誤資訊

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