2009-10-30 13 views
7

Estoy tratando de usar el marco de prueba de unidad check para mi aplicación C. Pero no puedo utilizar el depurador (BGF) con él a causa de dos puntos:Prueba de unidad de depuración en C usando el cheque

  • en primer lugar, comprobar utilizar algunas macros complejas (START_TEST y END_TEST) y el depurador tiene problemas para poner un punto de interrupción en el código entre estas dos macros (de hecho, puedo poner un punto de interrupción de software pero nunca se ve por gdb)

  • segundo, verifique definir algún tipo de excepciones mediante la redefinición del comportamiento de la interrupción. Por lo tanto, cuando trato de poner un punto de interrupción de hardware, la prueba falla y salgo porque considero el punto de corte de hardware como una falla de mi prueba.

¿Alguien ya ha encontrado este problema y tiene una solución?

Respuesta

11

Mira el no-fork mode:

Verificar normalmente se bifurca para crear un espacio de direcciones separada. Esto permite capturar e informar una señal o salida anticipada, en lugar de anular todo el programa de prueba, y normalmente es muy útil. Sin embargo, cuando intenta depurar por qué se produjo la falla de segmentación u otro error del programa, la bifurcación dificulta el uso de las herramientas de depuración.

0

Pruebe TAP (Test Anything Protocol) ... es mucho más fácil de implementar, enviar y depurar. También es muy fácil hacerlo valgrind -aware y tiende a jugar mejor con gdb.

+0

A partir del 2016-09-23, el enlace TAP a [http://ccan.ozlabs.org/info/tap.html](http://ccan.ozlabs.org/info/tap.html) es 404. El sitio web principal, ozlabs.org, todavía se está ejecutando, pero no puedo encontrar la información de TAP. Wikipedia tiene una entrada para [Test Anything Protocol] (https://en.wikipedia.org/wiki/Test_Anything_Protocol); hay un sitio web para [Test Anything Protocol] (https://testanything.org/) con implementaciones en C, C++, Java, JavaScript, Python, Perl, etc. –

5

En realidad, PUEDE utilizar el modo horquilla también.

BGF tiene dos opciones interesantes relacionados con el comportamiento tenedor:
- detach-on-fork (juego esta en false)
- follow-on-fork (ya sea padre o hijo; Siempre tomo niño)

Esto hará que el BGF sigue el niño proceso. Cuando el proceso hijo ha finalizado, debe volver al proceso principal manualmente utilizando el comando inferior.