"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso depurar extensões Protobuf conflitantes em testes de unidade Go usando o VS Code?

Como posso depurar extensões Protobuf conflitantes em testes de unidade Go usando o VS Code?

Publicado em 2024-11-07
Navegar:114

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

Executar e depurar testes de unidade com sinalizadores: lidar com extensões protobuf conflitantes

Ao depurar testes de unidade no VS Code, pode ser necessário passar sinalizadores adicionais para explicar extensões Protobuf conflitantes. Este guia fornece uma solução para esse problema, permitindo uma depuração contínua.

A configuração original no VS Code settings.json tenta adicionar o sinalizador necessário '-ldflags "-X google.golang.org/protobuf/reflect /protoregistry.conflictPolicy=avisar"'. No entanto, esta configuração enfrenta um problema quando o VS Code gera um comando de teste com aspas simples ao redor do sinalizador.

Para resolver isso, é necessário um ajuste na configuração em settings.json. A modificação deve remover as aspas simples em torno do valor do sinalizador:

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

Com esta modificação, o VS Code irá gerar um comando de teste que inclui corretamente o sinalizador necessário sem causar o erro associado a conflitos de extensão proto.

Para depuração, uma abordagem diferente é recomendada devido a as complexidades de depuração de testes específicos usando a interface do VS Code. Compilar o binário de teste com sinalizadores específicos e utilizar dlv para depuração headless permite maior controle e depuração eficiente.

Para compilar o binário de teste:

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

Este comando gera um binário com os sinalizadores necessários para depuração. Para conectar dlv no modo headless para conexão do editor:

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

Aqui, foo.test é o binário gerado, -count=1 representa sinalizadores personalizados para teste e $(pwd)/some/path pode ser usado para estilo pepino testes. Conecte seu editor à sessão dlv e comece a depuração.

Informações adicionais

Go também fornece métodos convenientes para iniciar dlv por meio de sinalizadores inline e, para usuários do Vim, o vim O plugin -go permite configuração de ponto de interrupção personalizado e conexão dlv usando comandos como: GoDebugConnect 127.0.0.1:2345. Seguindo as etapas descritas acima, os desenvolvedores podem executar e depurar testes de unidade com sinalizadores de maneira eficaz, garantindo testes e manutenção de código tranquilos.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3