
Visual Studio 코드를 사용하여 Go 코드 디버깅 방법
2022-06-01 last update
14 minutes reading Development Go VS Code소개
이 강좌는 Go 디버깅 Visual Studio Code 코드를 사용하는 데 필요한 절차를 토론할 것이다.확장, 분석 도구, 디버거를 설치해야 합니다.
우선, 우리는 예시 응용 프로그램을 만들 것이다.그리고 우리는 단점과 조건 단점을 어떻게 사용하는지 연구할 것이다.
이 기술 집합을 사용하면 프로그램이 코드에서 실행하는 특정한 점의 값과 상태를 더욱 잘 이해할 수 있습니다.
선결 조건
이 강좌를 완성하려면 다음과 같은 내용이 필요합니다.
.go
파일을 엽니다.상태 표시줄의 오른쪽 아래에 분석 도구를 설치하라는 메시지가 표시됩니다.링크를 클릭하여 플러그인의 유효한 작업에 필요한 Go 패키지를 설치합니다.Go를 위한 소스 디버거인 Delve을 설치해야 합니다.이를 위해서는 detailed installation instructions for specific platforms이 필요하다.
단계 1 - 예제 응용 프로그램 만들기
Go 코드를 디버깅하는 데는 두 가지 예가 있습니다.
main.go
만들기:- 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에 출력합니다.다음과 같은 방법으로 응용 프로그램을 실행할 수 있습니다.
- 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
문장을 줄일 것입니다.