2016-10-17 2 views
0

Derzeit verwende ich Valgrind, um Speicherleck zu überprüfen und Purify als eine Alternative zu nehmen. Valgrind kann die Zugriffsverletzung für ein Array herausfinden, das im Heap, aber nicht im Stack erstellt wurde.Kann Purify Zugriffsverletzung auf Stack-Variablen herausfinden?

Valgrind Punkte des ungültigen schreiben und lesen in den obigen Code, aber nicht den folgenden Code.

char a[5] = {0}; 
a[7] = 'c'; 
printf("%c\n", a[7]); 

Kann Purify die Zugriffsverletzung der beiden Blöcke des Codes identifizieren?

Antwort

0

Gemäß dem Benutzerhandbuch (ftp://ftp.software.ibm.com/software/rational/docs/v2003/purify/html/ht_m_sbr.htm) und (ftp://ftp.software.ibm.com/software/rational/docs/v2003/purify/html/ht_m_sbw.htm) kann Purify sowohl das Lesen als auch das Schreiben von Stackgrenzen erkennen.

Allerdings wurde versucht, Ihre tatsächlichen Beispiele nur die Verletzung auf Heap-Daten wurde auch von Purify erkannt. Ich habe nur die neueste Version von IBM (7.0.1) getestet, sowohl für Linux als auch für Solaris.

Sie sollten sich -fsanitize = Adresse für gcc 4.8 und höher anschauen.