본문 바로가기
Blockchain/Ethereum

[ Geth ] 파헤치기 1 번 - Geth 실행 및 디버깅 방법

by 기저귀찬개발자 2019. 4. 15.

관련글

2019/04/15 - [Blockchain/Ethereum] - [ Geth ] 파헤치기 1 번 - Geth 실행 및 디버깅 방법

2019/05/06 - [Blockchain/Ethereum] - [ Geth ] 파헤치기 2 번 - 시작 Log 분석하기

2019/06/14 - [Blockchain/Ethereum] - [ Geth ] 파헤치기 3 번 - geth Main 함수 살펴보기

2019/06/24 - [Blockchain/Ethereum] - [ Geth ] 파헤치기 4 번 - geth 함수 살펴보기

 

 

 

환경

- Ubuntu 18.04.2 

 

사용툴

- VSCode 설치

- vscode에 GoExtension 확장 프로그램 추가

 

계획

1. golang 설치

2. geth 소스 내려받기 ( using Git )

 

 

 

3. go install 하여 geth 실행 파일 생성

4. 소스 확인을 위한 tool 설치 ( VSCode )

5. geth main 소스 확인

 

 

준비과정

1. golang 설치

2. geth 소스 내려받기  

  - Go 언어는 외부 저장소와의 통신으로 소스를 가져올 수 있다. (GitHub, BitBucket,Launchpad, IBM DevOps Services )

  - 각 저장소와의 통신을 하기 위해선 Git, Mercurial, Bazaar 중 선택적으로 우선적으로 설치 하여야 한다.

  - 필자는 GitHub에서 가져올 것이기 때문에 Git 을 설치한 후에 아래 명령어를 실행하였다.

  - 총 용량이 1.1 기가로 전체 다운로드 받는데 일정 시간이 걸린다

 go get -d github.com/ethereum/go-ethereum

 

 

3. go install 하여 geth 실행 파일 생성

  - 소스를 내려받았으니 해당 소스를 install 하여 geth 실행 파일을 생성해야 한다.

  - install과 build의 차이점은 install 시에 라이브러리 파일들을 build 과정에서 재사용할 수 있도록

    go/pkg 폴더에 실행파일로 생성한다.

  - 라이브러리 파일들은 건들일 일이 없으니 install 하자

 

go install github.com/ethereum/go-ethereum/cmd/geth

 

 

 

 

 - 생성된 geth를 실행해보자

bin/geth

  

 - 실행 되는 것을 확인했다

 

 

 

 

4.소스 확인을 위한 tool 설치

 - 여러가지 tool이 있지만 vscode 로 진행하겠다.

 - vscode를 설치한다. (https://code.visualstudio.com/download)

 - view > Command Palette    or    Shift + Ctrl + P

 go 언어 사용을 위해 go Extension을 설치한다.

 

5. geth main 소스 확인

 - 툴을 열고 main 소스를 찾아보자 

 

 - main.go 를 확인해보자

 - geth의 시작점을 찾았다. 

//line 283
func main() {
	if err := app.Run(os.Args); err != nil {
		fmt.Fprintln(os.Stderr, err)
		os.Exit(1)
	}
}

 

6. log 찍어보기 

 - geth 실행시 "Hello, world" 를 출력하고 끝내는 문장을 추가 한뒤 

 - Debug > start Debugging 을 눌러 디버깅을 시작하자 

func main() {
   
	fmt.Println("Hello, world");
    return;

	if err := app.Run(os.Args); err != nil {
		fmt.Fprintln(os.Stderr, err)
		os.Exit(1)
	}
} 

 - 아래와 같이 콘솔창에 Hello, world 가 출력되고 geth 가 종료되는 것을 확인할 수 있다.

 

 - 혹은 라인 왼쪽에 Debugging Point를 찍어서 소스를 확인할 수 있다.

 

 

지금까지 geth 초기 세팅과 디버깅 방법에 대해서 확인하였다.

Go 문법에 대해 부족한 점을 학습하며 소스를 천천히 확인해 보도록 하자

 

 

댓글