美文网首页工作生活
2019-07-03 testeth调试

2019-07-03 testeth调试

作者: oracle3 | 来源:发表于2019-07-03 16:28 被阅读0次

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

    1、编译aleth

    git clone --recursive https://github.com/ethereum/aleth.git
    cd aleth
    

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

    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") 
    

    然后:

    mkdir build; cd build 
    cmake -G "Xcode" .. 
    

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

    export http_proxy=myproxy:myport
    export https_proxy=myproxy:myport
    

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

    xcodebuild -list -project aleth.xcodeproj
    

    我们选择ALL_BUILD编译所有

    xcodebuild -scheme ALL_BUILD
    

    漫长等待编译成功

    2、编译hera

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

    cd ../../
    git clone https://github.com/ewasm/hera --recursive
    cd hera
    mkdir build && cd build
    cmake .. -DBUILD_SHARED_LIBS=ON
    cmake --build .
    

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

    cp src/libhera.so ../../aleth/build/test/.
    

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

    3、testeth调试

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

    -t GeneralStateTests/stEWASMTests -- --vm /Users/elikong/work/hera/build/src/libhera.dylib --singletest createFromTransaction --singlenet "Byzantium" --evmc metering=true fallback=true
    

    还需要在Options中设置Working Directory:

    /Users/elikong/work/aleth/build/test
    

    否则执行会找不到测试用例
    断点设置:

    加载动态库: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
    

    相关文章

      网友评论

        本文标题:2019-07-03 testeth调试

        本文链接:https://www.haomeiwen.com/subject/ooqchctx.html