J'ai une plate-forme cible qui signale quand la mémoire est lue ou écrite, ainsi que quand des verrous (p. Ex. Mutex par exemple) sont pris/libérés. Il signale le compteur de programme, l'adresse de données et le drapeau de lecture/écriture. J'écris un programme pour utiliser cette information sur une machine hôte séparée où les rapports sont reçus afin de ne pas interférer avec la cible. La cible signale déjà ces données, donc je ne change pas du tout le code cible.Comment puis-je détecter une violation d'accès mémoire et/ou des conditions de course de mémoire?
Existe-t-il des références ou des algorithmes déjà disponibles qui effectuent ce type de détection? Par exemple, un moyen de détecter les conditions de concurrence lorsque plusieurs threads essaient d'écrire dans une variable globale sans la protéger en premier.
Je brasse actuellement le mien mais je me convainque qu'il y a certainement du code là-bas qui le fait déjà. Ou au moins un algorithme prouvé de la façon de s'y prendre.
Remarque Il ne s'agit pas de détecter les fuites de mémoire.
Remarque langage d'implémentation C++ est
Je suis en train de faire le code de détection j'écris plate-forme agnostique, donc je suis en utilisant STL et juste C++ standard avec les bibliothèques comme coup de fouet, poco, Loki.
Tous les prospects aideront
merci.
-t-il un rapport aussi des allocations et désaffectations (malloc/nouvelle, libre/supprimer) ? Je suppose que vous voulez dire accéder à de la mémoire non allouée ou libérée lorsque vous parlez de violation d'accès mémoire. – joshperry
voir electricfence – Tom
Oui, il signale les allocations/désallocations, mais ce n'est qu'un sous-ensemble de ce qu'il rapporte. – dubnde