7
votes

Test de l'unité de débogage en C Utilisation de la vérification

J'essaie d'utiliser chèque Cadre de test unitaire pour mon application C. Mais je ne peux pas utiliser le débogueur (GDB) avec elle à cause de deux points:

  • Tout d'abord, cochez Utilisez certaines macros complexes ( start_test et end_test ) et le débogueur a du mal à mettre un point d'arrêt dans mon code entre ces deux macros ( Fait, je peux mettre un point d'arrêt logiciel mais il n'est jamais vu par GDB)

  • Deuxièmement, vérifiez définir une sorte d'exception en redéfinissant le comportement de l'interruption. Par conséquent, lorsque j'essaie de mettre un point d'arrêt matériel, le test a échoué et quitte car la vérification prend en compte le point d'arrêt du matériel comme une défaillance de mon test.

    Quelqu'un a-t-il déjà rencontré ce problème et a une solution?


0 commentaires

4 Réponses :


0
votes

essayez Tapez sur (testez quoi que ce soit du protocole) ... il est beaucoup plus facile de mettre en œuvre, navire et débogage. Il est également très facile de le faire Valgrind -aware et tend à jouer mieux à gdb .


1 commentaires

À partir de 2016-09-23, le lien Appuyez sur http://ccan.ozlabs.org/ Info / Tap.html est 404. Le site Web principal, OzLabs.org, est toujours en cours d'exécution, mais je ne peux pas localiser les informations sur le robinet. Wikipedia a une entrée pour le Testez quoi que ce soit du protocole ; Il y a un site web pour le Testez quoi que ce soit du protocole avec des implémentations dans C, C ++, Java, JavaScript, Python, Perl, etc. .



12
votes

regarder le Mode No-Fork :

Vérifiez normalement des fourches pour créer un espace d'adressage séparé. Cela permet un signal ou une sortie précoce à prendre et à rapporter, plutôt que de déduire tout le programme de test et est normalement très utile. Cependant, lorsque vous essayez de déboguer pourquoi la défaillance de la segmentation ou une autre erreur de programme est survenue, le forking rend difficile l'utilisation d'outils de débogage.


0 commentaires

7
votes

En réalité, vous pouvez également utiliser le mode de fourche aussi.

GDB a deux options intéressantes liées au comportement de la fourche:
- Détachez-la-Fork (Définissez ceci sur false)
- suivi-fork (parent ou enfant; je prends toujours un enfant)

Cela rendra GDB suivre le processus d'enfant. Lorsque le processus d'enfant est terminé, vous devez revenir manuellement sur le processus parent en utilisant la commande inférieure inférieure.


0 commentaires

1
votes

J'ai lu Ce et Il suggère une solution très simple: xxx

qui a fonctionné pour moi. Je pourrais ensuite définir un point d'arrêt dans les fonctions que les cas de test appellent (c'est-à-dire les fonctions à tester), et elle s'est cassée au bon endroit.


0 commentaires