>  기사  >  백엔드 개발  >  디버그 golang을 모듈화하는 방법

디버그 golang을 모듈화하는 방법

PHPz
PHPz원래의
2023-05-15 11:16:37423검색

Golang은 강력한 형식의 언어로, 컴파일된 실행 언어입니다. 즉, 사용자가 코드를 실행하려면 코드를 컴파일해야 합니다. 고품질 소프트웨어를 작성할 때 코드 디버깅은 매우 중요합니다. 코드에서 버그가 발견되면 프로그램이 실패하거나 예상치 못한 결과가 발생할 수 있습니다. 이 글에서는 Golang에서 모듈을 디버깅하는 방법을 소개합니다.

  1. GDB를 사용한 디버깅

GDB는 다양한 프로그래밍 언어에서 사용할 수 있는 강력한 디버깅 도구입니다. Golang에서는 GDB를 golang 런타임 라이브러리와 함께 사용하여 프로세스의 실행 상태, 메모리 누수 및 기타 문제를 추적할 수 있습니다. GDB 사용의 첫 번째 단계는 기호 및 디버깅 정보를 저장하기 위해 코드를 컴파일할 때 -g 플래그를 사용하는 것입니다. 예:

go build -gcflags "-N -l" -o myapp main.go

그런 다음 GDB를 사용하여 프로그램을 실행하고 중단점을 설정합니다. 예를 들어, myFunc 함수에 중단점을 설정하려면 다음 명령을 실행하십시오:

(gdb) break myFunc

다음으로 프로그램을 실행하십시오:

(gdb) run

프로그램이 myFunc 중단점에서 실행을 중지하면 GDB를 사용하여 변수를 검사하고 스택을 호출할 수 있습니다. 계속 한 단계씩 실행 프로그램을 실행하거나 코드에서 직접 변수를 수정합니다.

  1. Delve를 사용한 디버그

Delve는 Golang과 함께 사용할 수 있는 빠르고 유연하며 사용하기 쉬운 디버거입니다. GDB와 달리 Delve는 Golang용으로 특별히 개발되었기 때문에 사용이 매우 쉽고 Golang 관련 기능이 많이 있습니다. Delve는 명령줄이나 IDE에서 사용할 수 있는 명령줄 도구와 디버깅 API를 제공합니다.

먼저 Delve를 설치하려면 go get 도구를 사용해야 합니다.

go get github.com/go-delve/delve/cmd/dlv

다음으로 다음 명령을 사용하여 디버거에서 프로그램을 시작합니다.

dlv debug <your_program.go>

프로그램을 시작하는 동안 Delve는 첫 번째 명령에서 자동으로 중지됩니다. 코드 줄. 중단점을 설정하려면 언제든지 Ctrl-C를 누르거나 break myFunc 명령을 입력하여 myFunc 함수에 중단점을 설정할 수 있습니다. 프로그램을 시작한 후 프로그램이 이 기능에 들어가면 이 중단점에서 중지됩니다.

많은 명령을 사용하여 프로그램 상태를 보고 수정할 수 있습니다. 몇 가지 일반적인 명령은 다음과 같습니다.

  • 변수 값 수정: set 4427259a143dae059a7f20af7ef733ee = 8487820b627113dd990f63dd2ef215f3
  • 변수 값 인쇄: print 4427259a143dae059a7f20af7ef733ee
  • 함수의 소스 코드 표시 : list 8fd0b0dd077e9e3b89425c7034f15437
  • 다음 중단점까지 프로그램을 계속 실행합니다. continue

Delve에는 다른 기능도 있습니다. 예를 들어 IDE에 Delve 플러그인을 설치하고, DEBUG 모드를 활성화하고, 프로그램을 시작할 수 있습니다. 한 번의 클릭으로 쉽게 중단점을 추가할 수 있습니다.

  1. 로그를 사용한 디버깅

어떤 경우에는 코드 베이스가 크거나 다른 아키텍처를 사용하는 경우 디버거가 너무 복잡하거나 사용하기 어려울 수 있습니다. 이 경우 로그 디버깅을 사용하는 것이 더 나을 수 있습니다. Golang에서는 내장된 로그 모듈을 사용하여 코드에 로그를 추가하여 프로그램 실행 중에 발생하는 문제를 캡처할 수 있습니다.

로그 모듈에는 주로 INFO, WARNING, ERROR 및 FATAL의 네 가지 로그 수준이 있습니다. 이 모듈을 사용하여 파일에 기록하거나 콘솔에 출력할 수 있습니다.

예를 들어, 프로그램의 주요 기능에서 다음 코드를 사용하여 DEBUG 수준 로깅을 활성화할 수 있습니다.

import "log"

func main() {
    log.SetFlags(log.LstdFlags | log.Lshortfile)
    log.SetLevel(log.DebugLevel)

    log.Debug("Starting program...")
    // ...
}

그런 다음 코드의 어느 곳에서나 로깅할 수 있습니다.

log.Debugf("x=%d", x)

프로그램이 실행 중일 때 로깅 함수를 호출하면 터미널이나 출력 파일과 같은 표준 출력에 적절한 메시지를 씁니다.

요약

어떤 도구를 사용하든, 어떤 디버깅 스타일을 선호하든, 디버깅은 모든 프로그램의 문제를 찾아 해결하는 데 필수적인 도구입니다. Golang에서는 GDB, Delve 또는 로그를 사용하여 코드를 디버깅하고 조정할 수 있습니다. 이러한 도구와 기술을 사용하면 코드 가독성, 성능 및 견고성을 향상시켜 소프트웨어의 안정성을 높일 수 있습니다.

위 내용은 디버그 golang을 모듈화하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.