"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo depurar extensiones conflictivas de Protobuf en pruebas unitarias de Go usando VS Code?

¿Cómo puedo depurar extensiones conflictivas de Protobuf en pruebas unitarias de Go usando VS Code?

Publicado el 2024-11-07
Navegar:320

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

Ejecutar y depurar pruebas unitarias con indicadores: abordar extensiones conflictivas de Protobuf

Mientras se depuran pruebas unitarias dentro de VS Code, puede ser necesario aprobar indicadores adicionales para tener en cuenta las extensiones de Protobuf en conflicto. Esta guía proporciona una solución a este problema, lo que permite una depuración perfecta.

La configuración original en VS Code settings.json intenta agregar el indicador requerido '-ldflags "-X google.golang.org/protobuf/reflect /protoregistry.conflictPolicy=advertir"'. Sin embargo, esta configuración enfrenta un problema cuando VS Code genera un comando de prueba con comillas simples alrededor de la bandera.

Para resolver esto, se requiere un ajuste en la configuración en settings.json. La modificación debería eliminar las comillas simples alrededor del valor de la bandera:

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

Con esta modificación, VS Code generará un comando de prueba que incluye correctamente el indicador necesario sin causar el error asociado con los conflictos de extensión de proto.

Para la depuración, se recomienda un enfoque diferente debido a las complejidades de depurar pruebas específicas utilizando la interfaz VS Code. Compilar el binario de prueba con indicadores específicos y utilizar dlv para la depuración sin cabeza permite un mayor control y una depuración eficiente.

Para compilar el binario de prueba:

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

Este comando genera un binario con los indicadores necesarios para la depuración. Para conectar dlv en modo sin cabeza para la conexión del editor:

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

Aquí, foo.test es el binario generado, -count=1 representa indicadores personalizados para pruebas y $(pwd)/some/path se puede usar para estilo pepino. pruebas. Conecte su editor a la sesión dlv y comience a depurar.

Información adicional

Go también proporciona métodos convenientes para iniciar dlv a través de indicadores en línea y, para los usuarios de Vim, el vim El complemento -go permite la configuración personalizada de puntos de interrupción y la conexión dlv usando comandos como: GoDebugConnect 127.0.0.1:2345. Siguiendo los pasos descritos anteriormente, los desarrolladores pueden ejecutar y depurar eficazmente pruebas unitarias con indicadores, lo que garantiza pruebas y mantenimiento del código sin problemas.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3