Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
prog:lazarus:debug:heaptrc [05/04/2020 14:32] thierry [Améliorations] |
prog:lazarus:debug:heaptrc [05/04/2020 14:41] (Version actuelle) thierry [HeapTrc] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== HeapTrc et gestion de la mémoire ====== | ====== HeapTrc et gestion de la mémoire ====== | ||
HeapTrc permet de détecter des éventuelles "fuites" de mémoire lors du débuggage. | HeapTrc permet de détecter des éventuelles "fuites" de mémoire lors du débuggage. | ||
- | ====== HeapTrc ====== | + | ===== HeapTrc ===== |
==== Activation===== | ==== Activation===== | ||
Ligne 10: | Ligne 10: | ||
{{:prog:lazarus:debug:heaptrc1.png|}} | {{:prog:lazarus:debug:heaptrc1.png|}} | ||
''O unfreed memory blocks : 0'' = OK tout va bien ! | ''O unfreed memory blocks : 0'' = OK tout va bien ! | ||
- | === Améliorations === | + | ==== Améliorations ==== |
- | ==== Afficher que si il y a des erreurs ==== | + | === N'Afficher que si il y a des erreurs === |
Si vous ne voulez pas voir la fenêtre de sortie quand tout va bien, juste quand il y a des erreurs, il vous faudra mettre ce bout de code dans le fichier ''.lpr'' de votre projet | Si vous ne voulez pas voir la fenêtre de sortie quand tout va bien, juste quand il y a des erreurs, il vous faudra mettre ce bout de code dans le fichier ''.lpr'' de votre projet | ||
Ligne 48: | Ligne 48: | ||
end. | end. | ||
</code> | </code> | ||
+ | ===== THeapStatus ===== | ||
+ | THeapStatus sert a récuperer les infos sur la mémoire utilisée par le programme | ||
+ | ==== Déclaration ==== | ||
+ | dans l'unité (???) heaph.inc | ||
+ | <code delphi> | ||
+ | THeapStatus = record | ||
+ | TotalAddrSpace: Cardinal; | ||
+ | TotalUncommitted: Cardinal; | ||
+ | TotalCommitted: Cardinal; | ||
+ | TotalAllocated: Cardinal; | ||
+ | TotalFree: Cardinal; | ||
+ | FreeSmall: Cardinal; | ||
+ | FreeBig: Cardinal; | ||
+ | Unused: Cardinal; | ||
+ | Overhead: Cardinal; | ||
+ | HeapErrorCode: Cardinal; | ||
+ | end; | ||
+ | </code> | ||
+ | ==== Utilisation ==== | ||
+ | |||
+ | <code delphi> | ||
+ | Var | ||
+ | FHeap: THeapStatus; | ||
+ | | ||
+ | procedure TForm1.WriteHeapStatus; | ||
+ | begin | ||
+ | FHeap := GetHeapStatus; // A appeler à chaque fois que l'on veut lire les données | ||
+ | writeln(format('TotalAllocated:%d (%d)', [FHeap.TotalAllocated, FHeap.TotalAllocated - FLastAllocated])); | ||
+ | writeln(format('TotalFree:%d (%d)', [FHeap.TotalFree, FHeap.TotalFree - FLastFree])); | ||
+ | FLastFree := FHeap.TotalFree; | ||
+ | FLastAllocated := FHeap.TotalAllocated; | ||
+ | end; | ||
+ | |||
+ | </code> | ||
+ | |||
+ | |||
===== Voir aussi ===== | ===== Voir aussi ===== | ||
+ | |||
* [[https://wiki.freepascal.org/heaptrc]] | * [[https://wiki.freepascal.org/heaptrc]] | ||
* [[https://wiki.freepascal.org/leakview]] | * [[https://wiki.freepascal.org/leakview]] |