Frage

Gibt es bekannte Fehlalarme mit Valgrind? Ich erhalte einen ‚Bedingter Sprung oder bewegt, hängt von uninitialised Wert (en)‘ mit der fmemopen Funktion in C zu schreiben und mit GCC kompilieren. Kann ich es sicher sein, real?

EDIT: Gibt es bekannte Probleme, die nicht in den Unterdrückungs Dateien? Gibt es einige Dinge, die man in einem Programm tun, die nicht wirklich Fehler sind aber Valgrind werden sagen, sie sind? Wenn es Probleme bekannt sind, wäre eine Liste schön.

War es hilfreich?

Lösung

Ja, es gibt Fehlalarme mit Valgrind, deshalb ist es Unterdrückung Dateien für bestimmte glibc und gcc-Versionen hat, zum Beispiel. Die Fehlalarme auftreten können, wenn Sie mit älteren valgrind mit neueren gcc und glibc, das heißt valgrind 3.3 mit glibc 2.9.

gesagt haben, dass Sie noch in Frage befassen müssen, und herauszufinden, ob es wirklich um einen Fehlalarm handelt (wenn dies der Fall zu sein, stellt sich heraus, können Sie eine Unterdrückung für sie schreiben kann, sich selbst) oder ist es ein echter Fehler in Ihr Programm.

Es gibt keine schnelle und einfache Art und Weise zu sagen, was hier vor sich geht, aber in diesem Fall würde ich vermuten, dass Sie zu Bibliothekscode nicht initialisierten Wert aus dem Code sind vorbei. Versuchen Valgrind Option --track-origins=yes. Es wird sich zeigen, wo der nicht initialisierte Wert herkommt. Wenn es Ihr Code ist, wahrscheinlich sollten Sie es initialisieren. Wenn es im Inneren Bibliothek ist, könnte es die falsche positive oder, noch sein, schlechte Werte der Bibliotheksaufruf Argumente so dass es sein könnte, so dass diese überprüfen.

Andere Tipps

Valgrind wird mit einigen Standard-Fehlerunterdrückung, aber sie sind keineswegs alle Bibliotheken abdecken.

  

Die Fehlerprüfung Tools erkennen zahlreiche Probleme in den Basisbibliotheken, wie die GNU-C-Bibliothek und die X11-Client-Bibliotheken, die auf Ihrem GNU / Linux-System vorinstalliert. Sie können diese nicht leicht beheben, aber Sie wollen nicht, diese Fehler sehen (und ja, es gibt viele!) So Valgrind liest eine Liste der Fehler beim Start zu unterdrücken. Eine Standard-Unterdrückung Datei wird vom ./configure-Script erstellt, wenn das System aufgebaut wird.

Sie können Ihre eigenen Fehler Unterdrückungen erstellen dass Sie wissen, um Ihren Code nicht relevant sind.

War das Debian-SSL Sache nicht motiviert durch einige Fehlalarme mit Valgrind Fixierung?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top