2017-08-01 7 views
4

J'utilise déjà le Valgrind dans les petits programmes pour vérifier memorys leaks et son bon fonctionnement.C++ - Valgrind sur codeblocks (linux)

Maintenant, j'ai un gros programme avec beaucoup de classe et .cpp et .h fichiers et je suis en train d'utiliser Valgrind pour vérifier l'memory leak parce que je l'utilise beaucoup de pointeurs, la mémoire, etc.

J'utilise linux et codeblocks 16.01 avec gcc et j'essayes d'exécuter le Valgrind directement dans codeblocks mais je me fais l'erreur de suivi:

--------------- Application output -------------- 
valgrind: /myPathToTheProject/ValgrindOut.xml: No such file or directory 

Si je test avec un petit projet avec seulement .cpp fichier et principal il fonctionne bien et le Valgrind générer le ValgrindOut.xml. Dans ce grand projet j'obtiens toujours cette erreur. Quelqu'un a une idée de ce qui ne va pas? ou autre moyen ou outil pour tester memory leak?

EDIT - FUITE RÉSUMÉ après l'exécution Valgrind

Leak summary: 

definitely lost: 673 bytes in 6 blocks. 
    indirectly lost: 89,128 bytes in 68 blocks. 
    possibly lost: 232 bytes in 2 blocks. 
    still reachable: 80,944 bytes in 6 blocks. 
     suppressed: 0 bytes in 0 blocks. 
+0

S'il vous plaît Exaplain comment exactement vous exécutez et où obtenez-vous cette erreur? – VTT

+0

Je cours directement dans des blocs de code. Barre du menu principal -> valgrind -> run memcheck et erreur apparaissent dans les codesblocks dans la sortie 'console' de valgrind – RMRMaster

+0

pouvez-vous simplement l'exécuter à partir de shell Linux à la place? Cela ressemble à un problème de codelocks (quel qu'il soit). – Serge

Répondre

0

Je ne sais pas comment exécuter valgrind directement à partir codeblocks. Je vous suggère de construire votre projet en utilisant des blocs de code. Pendant l'exécution, utilisez valgrind comme indiqué ci-dessous.

Commande

valgrind --tool=memcheck --leak-check=full --show-leak-kinds=all --log-file=leak.txt ./myexecutable <my command line arguments> 

Exemple

valgrind --tool=memcheck --leak-check=full --show-leak-kinds=all --log-file=leak.txt ./myexecutable -i 192.168.1.10 -p 5000 

De cette façon, vous pouvez générer un fichier de sortie valgrind, qui est leak.txt qui contient les fuites de mémoire, etc.

+0

Merci. Son vrai m'aide. Par exemple ce que sa moyenne: 112 octets dans 1 blocs sont perdus indirectement dans l'enregistrement de perte 25 de 38? J'ai beaucoup de message très égal à cela. – RMRMaster

+0

Ce sont des fuites de mémoire. Vous avez alloué de la mémoire, mais jamais libéré. Le pointeur qui pointe vers la mémoire allouée est modifié/écrasé, par conséquent vous ne pourrez jamais le libérer pendant la durée de vie du programme. Comme je n'ai pas de code source, il est très difficile de dire ce qui ne va pas. – Kamal

+0

Merci. J'ai quelques problèmes avec la fuite de mémoire parce que ceci (mon nouveau message) https://stackoverflow.com/questions/45441303/c-mysql-connector – RMRMaster