前言

  因为最近云小哥哥换了一份工作,新公司比较忙,所以一直没有更新新的博客。云小哥哥新的公司是做区块链的,最近在学习区块链相关的东西(也算是乘坐上了区块链这艘大船)。本博客是记录我搭建ethereum的debug环境的步骤。

系统环境及工具

  • 操作系统:mac 10.13.4
  • ide:go-land
  • 版本控制:git
  • go-lang:go version go1.10.3 darwin/amd64

通过 brew 就可以安装上述提到的所有工具,其他操作系统请自行安装上述工具。

搭建ethereum的debug环境

1.查看go的环境,找到 GOPATH

command:

go env

output:

GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/qingyun.yu/Library/Caches/go-build"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/qingyun.yu/go"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.10.3/libexec"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.10.3/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/cg/xnlvmg894zs64pmk0cvzxxg1jzppgf/T/go-build103516383=/tmp/go-build -gno-record-gcc-switches -fno-common"

通过上面的输出,我们就可以找到 GOPATH 的配置为 /Users/qingyun.yu/go

2.进入 /Users/qingyun.yu/go文件夹

command:

cd  /Users/qingyun.yu/go 

3.在文件夹上创建以下目录

eth/
src/
github.com/
ethereum/
golang.org/
bin/
pkg/

command:

mkdir eth eth/bin eth/src eth/pkg eth/src/github.com eth/src/golang.org eth/src/github.com/ethereum

4.进入 eth/src/github.com/ethereum 文件夹

cd eth/src/github.com/ethereum

5.通过git下载ethereum,地址是 https://github.com/ethereum/go-ethereum.git

command:

git clone https://github.com/ethereum/go-ethereum.git 

output:

thereum/go-ethereum.git
Cloning into 'go-ethereum'...
remote: Counting objects: 71480, done.
remote: Total 71480 (delta 0), reused 0 (delta 0), pack-reused 71480
Receiving objects: 100% (71480/71480), 97.76 MiB | 1.81 MiB/s, done.
Resolving deltas: 100% (47359/47359), done. 

出现以上输出表示下载成功了。

6.打开ide go-land

键盘按住:command+空格
搜索go-land,打开

7.载入eth文件夹

点击 Open Project ,找到 /Users/qingyun.yu/go/eth 文件夹,点击确定即可

8.创建 genesis.json 文件(初始化需要的一些参数)

genesis.json:

{
"config": {
"chainId": 666,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x40000",
"extraData" : "",
"gasLimit" : "0xffffffff",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00",
"alloc": { }
}

9.进入 Edit Configurations

点击 Edit Configurations ,出现以下界面

10.创建两个 Go Build

点击+号,然后点击 Go Build ,出现下面的界面

配置下面的参数:

第一个go build(初始化一些信息):

其中 dev/data/02 是存储数据的地方, private-geth/genesis.json 是初始化配置文件的地址,

第二个go build(运行以太坊客户端,并且打开控制台):

其中 666 为你要加入链的编号,以太坊默认的链是1号, console 表示进入控制台。

小结

通过以上的配置,你就可以使用ide进行debug调试了。

[ethereum源码分析](1) dubug环境搭建的更多相关文章

  1. Dubbo 源码分析系列之一环境搭建

    环境搭建的步骤有哪些 依赖外部的环境 使用的开发工具 源码的拉取 结构大致介绍 1 依赖的外部环境 安装JDK 安装Git 安装maven 这边我们就不介绍怎么安装这些外部环境了,大家自行从安装这些外 ...

  2. mybatis源码分析之01环境搭建

    直接使用maven搭建一个mybatis的运行环境 1. pom.xml <?xml version="1.0" encoding="UTF-8"?> ...

  3. JDK1.8源码分析03之idea搭建源码阅读环境

    序言:上一节说了阅读源码的顺序,有了一个大体的方向,咱们就知道该如何下手.接下来,就要搭建一个方便阅读源码及debug的环境.有助于跟踪源码的调用情况. 目前新开发的项目, 大多数都是基于JDK1.8 ...

  4. DolphinScheduler1.3.2源码分析(二)搭建源码环境以及启动项目

    前置依赖组件安装 找一台服务器,或者本地的虚拟机,然后在服务器上安装好jdk,zookeeper,mysql. 1.源码调试环境搭建 源码环境搭建可以参考DolphinScheduler官方网站的开发 ...

  5. [ethereum源码分析](3) ethereum初始化指令

    前言 在上一章介绍了关于区块链的一些基础知识,这一章会分析指令 geth --datadir dev/data/02 init private-geth/genesis.json 的源码,若你的eth ...

  6. 《k8s-1.13版本源码分析》-测试环境搭建(k8s-1.13版本单节点环境搭建)

    本文原始地址(gitbook格式):https://farmer-hutao.github.io/k8s-source-code-analysis/prepare/debug-environment. ...

  7. openwrt(一):openwrt源码下载及编译环境搭建

    声明:从网上各位大神的博客学习,整理后记录,非原创. 注:请用非root用户来下载源码 导航: 1. openwrt编译环境搭建 2. openwrt源码下载 3. feeds更新 1. openwr ...

  8. spring源码学习之路---环境搭建(一)

    作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 最近已经开始了spring源 ...

  9. bigdata_spark_源码修改_本地环境搭建_eclise

    Eclipse 下开发调试环境的配置该小节中使用的各项工具分别为:mac (Windows 7)+Eclipse Java EE 4.4.2+Scala 2.10.4+Sbt 0.13.8+Maven ...

随机推荐

  1. python字符串-方法

    一.1. upper()作用:将字符串中字符转换为大写 In [17]: spam Out[17]: 'hello,world' In [18]: print(spam.upper()) HELLO, ...

  2. [转帖]功耗降50%,性能升35%!三星3nm GAA 2021年量产

    功耗降50%,性能升35%!三星3nm GAA 2021年量产 http://www.chinaflashmarket.com/Instructor 在三星晶圆代工技术论坛(Samsung Found ...

  3. vue 还原Data里面的数据

    this.$data包含现有的data数据, this.$options.data()中是原有的data数据 还原代码 Object.assign(this.$data.searchForm, thi ...

  4. linux 进程2

    一. exec族函数 1.1. 为什么需要exec函数 a. fork子进程是为了执行新程序(fork创建了子进程后,子进程和父进程同时被OS调度执行,因此子进程可以单独的执行一个程序,这个程序宏观上 ...

  5. 背包问题: HDU1114Piggy-Bank

    Piggy-Bank Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total ...

  6. 介绍一下 except 的作用和用法?

    except: #捕获所有异常 except: <异常名>: #捕获指定异常 except:<异常名 1, 异常名 2> : 捕获异常 1 或者异常 2 except:< ...

  7. Rust学习笔记1

    这是一份不错的rust教程,目前包括4个block和4个project.全部完成后可以用rust实现一个简单的key-value存储引擎. 注意:Windows下rust貌似会遇到一些bug,强烈建议 ...

  8. django学习笔记(五)

    知识点概要 - Session - CSRF - Model操作 - Form验证(ModelForm) - 中间件 - 缓存 - 信号 内容详细: 1. Session 基于Cookie做用户验证时 ...

  9. Oracle锁表信息处理步骤

    查看是否有锁表的sql select 'blocker(' || lb.sid || ':' || sb.username || ')-sql:' || qb.sql_text blockers, ' ...

  10. JavaEE高级-MyBatisPlus学习笔记

    第 1 章 简介 1.1 MyBatisPlus 介绍 -MyBatis-Plus(简称 MP),是一个 MyBatis 的增强工具包,只做增强不做改变. 为简化开发工作.提高生产率而生我们的愿景是成 ...