Question

Cela pourrait ne pas apparaître comme une question de programmation, mais traite en soi avec le code.

J'ai un morceau suivant de test code, qui contient des erreurs évidentes comme index de tableau hors limites, fuite de mémoire: -

#include "stdio.h"
#include "stdlib.h"
main()
{
   int i;
   char *ptr;
   ptr = (char*)malloc(5);
   for(i=0;i<10;i++)
   {
      ptr[i]=(char)i;
   }

}

Ce code est construit sur un Studio MS-visuel 2008.

Je suis en train d'utiliser Rational Purify (version 7.0) pour identifier les erreurs d'exécution, les fuites de mémoire dans mon code. Vers après avoir lu quelques conseils sur la façon de construire un code pour une utilisation dans Purify, je l'ai fait ci-dessous les choses dans les paramètres du projet VSM-2008: -

1.) Désactiver lien incrémental 2.) flag compilateur d'informations de débogage est / Zi

.

3) Définissez l'option Linker -. « Base d'exécution de vérification de la valeur par défaut

.

4) Ajout d'une option de liaison supplémentaire / fixe:. Pas

5.) Construire config est débogage, aucune optimisation activée.

Alors je construis et obtenir l'exe. J'utilise cette exe pour fonctionner en Purify de sorte qu'il instruments identiques. Mais la fenêtre de sortie Purifier après l'exécution / instrumenter cette exe, aucune erreur sur montre fuite de mémoire, ..etc qui sont présents dans le code ci-dessus.

La fenêtre de sortie de Purifier affiche la sortie des différents binaires (mon fichier exe et d'autres dll du système), il instrumentée chargé, exécuté. Mais dans la sortie où est présente des données au sujet de mon exe, il n'y a pas de message d'erreur.

Mon sentiment est que je fais une erreur en donnant des options de compilation / éditeur de liens tout en construisant l'exe dans MS-VS 2008.or Le format exécutable généré n'est pas compatible / compréhensible par Purify?

1.) Qu'est-ce qui pourrait être mal ici? Que plus d'options que je pourrais avoir besoin lors de la construction de l'exe?

2.) Mon processus d'utilisation purifient correcte, ou suis-je manque quelque chose? Comment puis-je obtenir Purify pour montrer toutes les erreurs dans mon programme après avoir fait l'analyse des temps d'exécution?

3.) Y at-il un autre outil (licence libre / commercial) qui peut detecl les fuites de mémoire, tableau sur les erreurs liées, l'utilisation de pointeurs non initialisées, variables, corruption de mémoire etc .. en faisant l'analyse des temps d'exécution du code C.

Désolé pour le courrier longuet, mais a dû être clair.

merci.

-AD

Était-ce utile?

La solution

Après furieusement essayer beaucoup de choses, la lecture sur Internet, je trouve le soln. pour cette

1) Ajouter une nouvelle variable d'environnement:

Name = IBM_RATIONAL_PURIFY_ENABLE_SELECTIVE

Vale = 1

2) En dehors des paramètres du projet Visual Studio MS qui je l'ai mentionné dans l'OP, en dessous du réglage est nécessaire -

C / C ++ -> Génération de code = bibliothèque Durée -> Debug multi-thread / MTd

Et quand u lancez l'exécutable dans Purify, vous devez cliquer sur Configurer sélectif, sélectionnez votre exe.

Alors quand u terme, il devrait colelct les informations relatives à l'erreur requise.

-AD

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top