Visual Studio 코드를 사용하여 Go 코드 디버깅 방법

Visual Studio 코드를 사용하여 Go 코드 디버깅 방법

2022-06-01 last update

14 minutes reading Development Go VS Code

소개


이 강좌는 Go 디버깅 Visual Studio Code 코드를 사용하는 데 필요한 절차를 토론할 것이다.확장, 분석 도구, 디버거를 설치해야 합니다.
우선, 우리는 예시 응용 프로그램을 만들 것이다.그리고 우리는 단점과 조건 단점을 어떻게 사용하는지 연구할 것이다.
이 기술 집합을 사용하면 프로그램이 코드에서 실행하는 특정한 점의 값과 상태를 더욱 잘 이해할 수 있습니다.

선결 조건


이 강좌를 완성하려면 다음과 같은 내용이 필요합니다.
  • 바둑을 알다.자세한 내용은 How To Code in Go 시리즈를 참조하십시오.
  • Go가 시스템에 설치되어 있습니다.컴퓨터에 Go를 설치하려면 튜토리얼 Go series의 운영체제에 따라 로컬 프로그래밍 환경을 설정하십시오.
  • Visual Studio Code이 당신의 기계에 설치되어 있습니다.
  • 에 설치된 VSCide-Go plugin.
  • 플러그인을 설치한 후 VS 코드에서 .go 파일을 엽니다.상태 표시줄의 오른쪽 아래에 분석 도구를 설치하라는 메시지가 표시됩니다.링크를 클릭하여 플러그인의 유효한 작업에 필요한 Go 패키지를 설치합니다.
    Go를 위한 소스 디버거인 Delve을 설치해야 합니다.이를 위해서는 detailed installation instructions for specific platforms이 필요하다.

    단계 1 - 예제 응용 프로그램 만들기


    Go 코드를 디버깅하는 데는 두 가지 예가 있습니다.
  • JSON 파일을 생성하는 Go 프로그램입니다.
  • 은 함수를 작성하여 테스트를 작성하고 VS 코드에서 테스트를 디버깅하는 방법을 볼 것입니다.
  • 다음은 첫 번째 예시의 원본 코드입니다.파일 main.go 만들기:
    1. nano main.go
    파일에 다음 내용을 추가합니다.
    주요했어가다
    package main
    
    import (
    	"encoding/json"
    	"fmt"
    	"log"
    )
    
    // Avenger represents a single hero
    type Avenger struct {
    	RealName string `json:"real_name"`
    	HeroName string `json:"hero_name"`
    	Planet   string `json:"planet"`
    	Alive    bool   `json:"alive"`
    }
    
    func (a *Avenger) isAlive() {
    	a.Alive = true
    }
    
    func main() {
    	avengers := []Avenger{
    		{
    			RealName: "Dr. Bruce Banner",
    			HeroName: "Hulk",
    			Planet:   "Midgard",
    		},
    		{
    			RealName: "Tony Stark",
    			HeroName: "Iron Man",
    			Planet:   "Midgard",
    		},
    		{
    			RealName: "Thor Odinson",
    			HeroName: "Thor",
    			Planet:   "Midgard",
    		},
    	}
    
    	avengers[1].isAlive()
    
    	jsonBytes, err := json.Marshal(avengers)
    	if err != nil {
    		log.Fatalln(err)
    	}
    	fmt.Println(string(jsonBytes))
    }
    
    여기서 우리는 구조 Avenger을 정의한 다음에 복수자 그룹을 만들고 그 중의 상태를 "alive"으로 변경한 다음에 결과를 JSON으로 변환하여 stdOUT에 출력합니다.
    다음과 같은 방법으로 응용 프로그램을 실행할 수 있습니다.
    1. go run main.go
    다음과 같은 출력이 생성됩니다.
    Output
    [{"real_name":"Dr. Bruce Banner","hero_name":"Hulk","planet":"Midgard","alive":false},{"real_name":"Tony Stark","hero_name":"Iron Man","planet":"Midgard","alive":true},{"real_name":"Thor Odinson","hero_name":"Thor","planet":"Midgard","alive":false}]

    단계 2 - 브레이크를 사용하여 디버깅하기


    디버깅을 시작하려면 설정을 만들어야 합니다.Visual Studio 코드의 왼쪽 창에서 디버그 아이콘을 누릅니다.그런 다음 기어 아이콘을 클릭하여 구성을 생성합니다.

    구성 파일은 .vscode/launch.json에서 작성되었으며 내용은 위와 같습니다.main.go 파일을 가리키는 구성 프로그램을 변경합니다.이 예에서는 main.go 파일이 하나만 있으므로 작업공간 루트 디렉토리로 변경할 수 있습니다.
    발사하다json
    {
      // ...
      "configuration": [
        {
          // ...
          "program": "${workspaceRoot}",
          // ...
        }
      ]
    }
    
    다음은 디버깅의 모든 내용이기 때문에 중단점을 추가해야 합니다.
    줄 번호 왼쪽을 클릭하고 21번째 줄(func main())에 브레이크를 추가합니다.그곳에서 너는 붉은 점을 볼 수 있을 것이다.

    다음은 F5을 누르거나 왼쪽 상단 모서리 디버깅 부분에 녹색 재생 단추가 있는 시작 단추를 눌러 디버깅 보기를 엽니다.

    디버그 도구 모음에서 Step Over 버튼을 여러 번 클릭합니다.

    디버거는 결국 40줄로 이동합니다.

    왼쪽의 Debug 섹션에서는 현재 브레이크 위치의 상태를 제공합니다.

    변수 부분에서 우리는 변수가 특정 시간의 상태나 값을 볼 수 있다.
    현재 실행 중인 함수는 main 함수와 40 줄입니다.
    너는 계속 앞으로 걸어갈 수 있다. 일단 우리가 이 선을 넘으면, 너는 avengers의 값이 변화하는 것을 볼 수 있다."Tony Stark"Alive입니다.

    단계 3 - 조건 브레이크 추가


    VS 코드 인터럽트는 인터럽트를 편집하는 옵션을 제공합니다. 인터럽트에 대한 표현식을 제공하는 방법입니다. 대부분의 경우 이 표현식은 보통 볼 표현식입니다.
    예를 들어 40행 avengers[1].isAlive()에서 우리는 표현식의 계산 결과가true일 때만 단점을 일으킬 수 있는 조건을 추가할 수 있다. avengers[1].Planet == "Earth"에서 보듯이.
    이를 위해 브레이크를 마우스 오른쪽 버튼으로 클릭하고 브레이크 편집을 선택합니다.

    브레이크가 없으면 마우스 오른쪽 버튼으로 클릭하면 조건부 브레이크를 추가하라는 메시지가 표시됩니다.

    일단 우리가 상기 어떤 항목을 선택한다면, 우리는 조건을 추가한다. avengers[1].Planet == "Earth".

    현재 F5을 사용하여 디버거를 시작하면 중단점에서 멈추지 않습니다.프로그램이 정상적으로 실행될 것입니다. 디버그 컨트롤러에서 결과를 볼 수 있습니다.

    다음은 우리의 기대에 부합하도록 코드를 편집합니다.토니 스타크의 별을 Earth으로 변경합니다.
    주요했어가다
    // ...
    {
    	RealName: "Tony Stark",
    	HeroName: "Iron Man",
    	Planet:   "Earth",
    },
    // ...
    
    F5을 사용하여 디버거를 다시 시작할 때, 디버그 보기가 열리고, 실행은 중단점에서 멈춥니다.JSON이 디버그 콘솔에 표시되지 않은 것을 볼 수 있습니다.

    단계 4 - 추가 디버깅 테스트 수행


    파일에 새 함수를 추가하여 덧셈 연산을 사용합니다.
    주요했어가다
    func add(a, b int) int{
    	return a+b
    }
    
    같은 디렉터리에 테스트 파일 main_test.go을 만들려면 다음과 같이 하십시오.
    main_ 테스트.가다
    package main
    
    import "testing"
    
    func Test_add(t *testing.T) {
    	a, b, c := 1, 2, 3
    
    	res := add(a, b)
    
    	if res != c {
    		t.Fail()
    	}
    }
    
    코드는 두 개의 숫자만 추가하고, 테스트는 함수만 호출합니다.
    하지만 VSCode Go 플러그인이 설치되어 있으면 테스트 기능 상단에 테스트 및 디버그 테스트를 실행하는 다른 옵션이 표시됩니다.

    테스트를 실행하고 출력 창에서 결과를 볼 수 있도록runtest를 누르십시오.
    그러나 디버깅 테스트를 하려면 우리가 뭘 잘 몰라서 그런지 예전처럼 인터럽트를 추가하고 디버깅 테스트를 누르는 것이 필요합니다.
    10줄에 브레이크 추가: if res != c.그런 다음 디버그 테스트를 클릭합니다.

    디버그 보기를 다시 열면 디버그 도구를 사용하여 왼쪽의 변수 부분에서 상태를 검사할 수 있습니다.

    결론


    디버깅은 소프트웨어 개발의 관건적인 부분으로 Visual Studio 코드 등 도구를 사용하면 우리의 생활이 더욱 수월해질 수 있다.
    우리는 이러한 개념을 설명하기 위해 디버거를 예시 항목에 추가했지만, 디버거를 기존 항목에 추가하고 사용할 수 있다.최종적으로, 코드가 실행 과정에서 정해진 값이나 상태를 보기 위해 기록에 사용되는 fmt.Println 문장을 줄일 것입니다.