>  기사  >  백엔드 개발  >  VS Code를 사용하여 Go 단위 테스트에서 충돌하는 Protobuf 확장을 어떻게 디버깅할 수 있나요?

VS Code를 사용하여 Go 단위 테스트에서 충돌하는 Protobuf 확장을 어떻게 디버깅할 수 있나요?

Barbara Streisand
Barbara Streisand원래의
2024-10-27 06:52:29825검색

How can I debug conflicting Protobuf extensions in Go unit tests using VS Code?

플래그를 사용하여 단위 테스트 실행 및 디버그: 충돌하는 Protobuf 확장 처리

VS Code 내에서 단위 테스트를 디버깅하는 동안 다음을 통과해야 할 수 있습니다. Protobuf 확장 충돌을 설명하기 위한 추가 플래그입니다. 이 가이드는 이 문제에 대한 솔루션을 제공하여 원활한 디버깅을 가능하게 합니다.

VS Code settings.json의 원래 구성에서는 필수 플래그 '-ldflags "-X google.golang.org/protobuf/reflect를 추가하려고 시도합니다. /protoregistry.contributePolicy=경고"'. 그러나 이 구성은 VS Code가 플래그를 작은따옴표로 묶은 테스트 명령을 생성할 때 문제에 직면합니다.

이 문제를 해결하려면 settings.json의 구성을 조정해야 합니다. 수정하면 플래그 값 주위에서 작은따옴표를 제거해야 합니다.

"go.testFlags": [
    "-ldflags",
    "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn"
]

이 수정을 통해 VS Code는 proto 확장 충돌과 관련된 오류를 발생시키지 않고 필요한 플래그를 올바르게 포함하는 테스트 명령을 생성합니다.

디버깅의 경우 VS Code 인터페이스를 사용하여 특정 테스트를 디버깅하는 복잡성으로 인해 다른 접근 방식을 권장합니다. 특정 플래그로 테스트 바이너리를 컴파일하고 헤드리스 디버깅을 위해 dlv를 활용하면 더 효과적으로 제어하고 효율적으로 디버깅할 수 있습니다.

테스트 바이너리를 컴파일하려면:

go test -c -ldflags "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn" -gcflags="all=-N -l"

이 명령은 필수 플래그가 포함된 바이너리를 생성합니다. 디버깅을 위한 플래그입니다. 편집기 연결을 위해 헤드리스 모드에서 dlv를 연결하려면:

dlv exec ./foo.test --headless --listen=:2345 --log --api-version=2 -- -count=1 -- $(pwd)/some/path

여기서 foo.test는 생성된 바이너리이고 -count=1은 테스트용 사용자 정의 플래그를 나타내며 $(pwd)/some/path는 다음과 같습니다. 오이 스타일 테스트에 사용됩니다. 편집기를 dlv 세션에 연결하고 디버깅을 시작하세요.

추가 정보

Go는 또한 인라인 플래그를 통해 dlv를 시작하는 편리한 방법을 제공하며, Vim 사용자의 경우 vim -go 플러그인은 :GoDebugConnect 127.0.0.1:2345와 같은 명령을 사용하여 사용자 정의 중단점 설정 및 dlv 연결을 허용합니다. 위에 설명된 단계를 따르면 개발자는 플래그를 사용하여 단위 테스트를 효과적으로 실행 및 디버그하여 원활한 테스트 및 코드 유지 관리를 보장할 수 있습니다.

위 내용은 VS Code를 사용하여 Go 단위 테스트에서 충돌하는 Protobuf 확장을 어떻게 디버깅할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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