前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2019-07-03 testeth调试

2019-07-03 testeth调试

作者头像
oracle3
发布2022-05-13 08:28:58
4440
发布2022-05-13 08:28:58
举报
文章被收录于专栏:oracle3技术大杂烩

testeth在ubuntu18虚拟机下使用vscode编译总是出现卡死,无法进行调试,改用mac本xcode编译调试成功,这里记录一下过程

1、编译aleth

代码语言:javascript
复制
git clone --recursive https://github.com/ethereum/aleth.git
cd aleth

由于是debug版本,这里修改CMakeLists.txt文件,在尾部增加

代码语言:javascript
复制
SET(CMAKE_BUILD_TYPE "Debug")  
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")  
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall") 

然后:

代码语言:javascript
复制
mkdir build; cd build 
cmake -G "Xcode" .. 

本来这个时候可以用xcode打开build\aleth.xcodeproj文件开始编译,但是公司网络有代理,而xcode在代理下无法下载软件包,总是在哪里重试,因此改命令行编译,命令行下可以通过

代码语言:javascript
复制
export http_proxy=myproxy:myport
export https_proxy=myproxy:myport

设置代理后编译,先用下面的命令查看编译选项,

代码语言:javascript
复制
xcodebuild -list -project aleth.xcodeproj

我们选择ALL_BUILD编译所有

代码语言:javascript
复制
xcodebuild -scheme ALL_BUILD

漫长等待编译成功

2、编译hera

参考2019-04-26 使用Testeth跑ewasm测试集

代码语言:javascript
复制
cd ../../
git clone https://github.com/ewasm/hera --recursive
cd hera
mkdir build && cd build
cmake .. -DBUILD_SHARED_LIBS=ON
cmake --build .

然后把动态库复制到testeth的目录下

代码语言:javascript
复制
cp src/libhera.so ../../aleth/build/test/.

测试用例的下载也参考上面的文章,否则后面的测试用例不存在

3、testeth调试

用xcode打开build\aleth.xcodeproj,在toolbar中选择项目testeth,然后点击edit Scheme...,设置Arguments中Arguments Passed On Launch:

代码语言:javascript
复制
-t GeneralStateTests/stEWASMTests -- --vm /Users/elikong/work/hera/build/src/libhera.dylib --singletest createFromTransaction --singlenet "Byzantium" --evmc metering=true fallback=true

还需要在Options中设置Working Directory:

代码语言:javascript
复制
/Users/elikong/work/aleth/build/test

否则执行会找不到测试用例

断点设置:

代码语言:javascript
复制
加载动态库:VMFactory.cpp,void setVMKind(const std::string& _name)
执行合约:EVMC.cpp,owning_bytes_ref EVMC::exec(u256& io_gas, ExtVMFace& _ext, const OnOpFunc& _onOp)
调用动态库函数:evmc.hpp,result execute(evmc_context& ctx,
                   evmc_revision rev,
                   const evmc_message& msg,
                   const uint8_t* code,
                   size_t code_size) noexcept
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、编译aleth
  • 2、编译hera
  • 3、testeth调试
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档