Quel est le meilleur outil pour détecter les fuites de mémoire dans Delphi [fermé]

StackOverflow https://stackoverflow.com/questions/416046

  •  03-07-2019
  •  | 
  •  

Question

Quel est le meilleur outil pour détecter les fuites de mémoire.

Gratuits et non gratuits.

Merci

Était-ce utile?

La solution

Nous utilisons EurekaLog dans Delphi 7. Il s'agit d'un composant de gestionnaire d'exceptions qui fournit des informations très détaillées sur les exceptions (y compris les variables d'environnement callstack!, etc.), même en cas de violation d'accès. Mais une autre fonctionnalité intéressante est que vous pouvez également indiquer une erreur en cas de fuite de mémoire, ce qui indique la ligne de code exacte où la mémoire / l'objet a été alloué en premier lieu! C'est un produit commercial, mais je le recommande tout de même vivement.

Autres conseils

FastMM est un détecteur de fuite de mémoire gratuit (source disponible), déjà intégré aux dernières versions de Delphi. Je n'ai jamais eu besoin d'autre chose.

Il est bien mieux de limiter les possibilités de fuites de mémoire lors du codage, au lieu de les rechercher plus tard. Quelques astuces:

Toujours utiliser, essayez dans votre code pour libérer les objets créés. Mieux vaut écrire ce code immédiatement, puis écrire du code pour utiliser les objets. Mieux vaut utiliser les fonctionnalités de l'EDI telles que les modèles de code.

Utilisez uniquement les fonctions qui renvoient des objets alloués dynamiquement lorsque cela est absolument nécessaire. Il est généralement préférable de passer des objets en tant que paramètres plutôt que de les créer et de les renvoyer. Par exemple ceci

procedure getChoices(var AChoices: TStrings);

serait beaucoup mieux que

function getChoices: TStrings;

car il n'y a pas de risque de fuite accidentelle de l'objet TStrings créé.

Je recommanderais la version complète de FastMM4 à la version incluse dans Delphi. La version complète vous donne un rapport complet et détaillé consigné dans un fichier au lieu de la boîte de dialogue. Associez-le à un "memoryleak-logfile-differ" différent, créé par votre propre famille, et qui est prêt pour une édition récente.

AQTime est très bon. Il fait également d'autres choses comme le profilage pour la performance. Et cela ne nécessite aucune modification de votre code. Bien sûr, la compilation avec les informations de débogage permet d’obtenir de meilleurs résultats.

J'utilise toujours ReportMemoryLeaksOnShutdown: = (DebugHook < > 0); afin que je ne reçoive que les fuites signalées si je débogue.

ps voulait placer ceci dans un commentaire mais je n'ai pas encore les droits.

Vous voudrez peut-être jeter un coup d'œil à cette session CodeRage 2: Lutte contre la mémoire pour Dummies . Il montre principalement comment utiliser FastMM pour prévenir / détecter les fuites de mémoire dans Delphi. Était pour D2007 mais toujours pertinent pour D2009.

FastMM est très bon. Je connais 3 ou 4 gestionnaires de mémoire libres pour Delphi. Cela prend moins d’une heure pour tous les vérifier, car ils ne nécessitent généralement que 3 lignes de code pour les intégrer au projet.

J'utilise MadExcept car il est gratuit pour un usage personnel.

Essayez UMLD 1.0 . Nous avons essayé et testé !! Solution intelligente à un outil de développement d’applications et de rapports de bogue Delphi pour le développement Delphi.

http://www.torry.net/authorsmore. php? id = 7616 & amp; sort = ID

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