Ich habe versucht, Valgrind mit dem Befehl brew install Valgrind
Zu installieren und erhalte die Meldung "valgrind: Diese Formel wird auf MacOS-Versionen, die neuer als Sierra sind, aufgrund einer Inkompatibilität mit dem Original nicht kompiliert oder funktioniert nicht wie erwartet. Fehler: Eine nicht erfüllte Anforderung ist fehlgeschlagen dieser Build. "
Ich habe stattdessen versucht, mit dem Befehl brew intall --HEAD Valgrind
Zu installieren. Nachdem ich die Abhängigkeiten autoconf, automake und libtool erfolgreich installiert habe, erhalte ich beim Versuch, valgrind zu installieren, einen Konfigurationsfehler:
"Valgrind funktioniert unter Darwin 10.x, 11.x, 12.x, 13.x, 14.x, 15.x, 16.x und 17.x (Mac OS X 10.6/7/8/9/10/11 und macOS 10.12/13)
Mein Betriebssystem ist macOs Mojave (10.14). Bedeutet das, dass ich derzeit kein funktionierendes Valgrind mit Homebrew installieren kann?
Eine (ziemlich schmerzhafte) Installation aus dem Quellcode, die auf diesem Patch , diesem Beitrag und dieser Antwort basiert.
$ git clone https://github.com/Echelon9/valgrind.git
$ cd valgrind
$ git checkout feature/v3.14/macos-mojave-support-v2
$ ./autogen.sh
$ ./configure --prefix=/where/you/want/it/installed --enable-only64bit
$ make
Wenn Sie die folgende Fehlermeldung erhalten: No rule to make target '/usr/include/mach/mach_vm.defs’
, Müssen Sie xcode-select --install
Ausführen. Möglicherweise müssen Sie Xcode aus dem App Store installieren, wenn Sie es noch nicht haben. Sobald dies erledigt ist, müssen Sie den coregrind/Makefile
Bearbeiten:
Suchen nach:
am__append_19 = \
/usr/include/mach/mach_vm.defs \
/usr/include/mach/task.defs \
/usr/include/mach/thread_act.defs \
/usr/include/mach/vm_map.defs
Stellen Sie nach der doppelten Überprüfung des folgenden Ordners jeder Zeile Folgendes voran:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk
Das Endergebnis sollte sein:
am__append_19 = \
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/mach/mach_vm.defs \
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/mach/task.defs \
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/mach/thread_act.defs \
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/mach/vm_map.defs
Führen Sie nun make
erneut aus und die Includes sollten gefunden werden. Das heißt aber nicht unbedingt, dass es kompiliert wird. Ich habe folgende Fehlermeldung erhalten:
vg_preloaded.c:136:19: error: expected ';' before 'const'
__private_extern__ const char *__crashreporter_info__ = "Instrumented by Valgrind " VERSION;
Ein Fix dafür ist das Hinzufügen der folgenden Zeile:
#define __private_extern__ extern
zu den folgenden Dateien:
coregrind/m_syscall.c
coregrind/m_syswrap/syswrap-darwin.c
coregrind/vg_preloaded.c
Schließlich müssen Sie die Daumen drücken, in der Hoffnung, dass keine weiteren Fehler auftreten:
$ make
$ make install
Ich habe das gleiche Problem. Es scheint, dass Valgrind nicht mit dem neuesten MacOS (10.14 Mojave) kompatibel ist. Versucht es auf die High Sierra Art zu installieren ( https://www.gungorbudak.com/blog/2018/04/28/how-to-install-valgrind-on-macos-high-sierra/ ) und bekam die gleiche Ausgabe, die Sie beschrieben haben. Die einzige Lösung, die ich Ihnen derzeit anbieten kann, ist die Arbeit an einer virtuellen Maschine ( https://www.virtualbox.org/ ) oder die Verwendung von Docker ( https://www.gungorbudak). com/blog/2018/06/13/Speicherleck-Test-mit-Valgrind-auf-Macos-mit-Docker-Containern / ).
Sie können die experimentelle Version von Valgrind für macOS 10.14.5 Mojave verwenden unter:
https://github.com/sowson/valgrind
Der Befehl, um es zu verwenden, ist:
brew install --HEAD https://raw.githubusercontent.com/sowson/valgrind/master/valgrind.rb
Es ist noch experimentell und braucht etwas Arbeit, aber für einfache Projekte funktioniert es bereits ... Viel Spaß!
zusätzlich: ich fand, dass dieses für mich auf meinem OSX 10.14 arbeitete
brew install --HEAD https://raw.githubusercontent.com/LouisBrunner/valgrind-macos/master/valgrind.rb
Ein Zweig, der arbeitet, um OSX korrekt zu machen. etwas, um uns zu überraschen, bis wir eine echte Valgrind-Version repariert haben.
Keine richtige Lösung für MacOs, aber vorerst habe ich ein Docker-Image erstellt. Nach der Installation von docker für macOS starten Sie valgrind wie folgt:
cd </path/to/source/directory/where/you/want/run/valgrind/with>
curl -O https://raw.githubusercontent.com/biocyberman/ValgrindDocker/master/startValgrind
./startValgrind # this will takes time for the first time, because it needs to fetch docker valgrind image
# you will get a root command Prompt inside the docker image.
# do what ever you want
# type 'exit' to quit
Sie können der Antwort von alex.m folgen, um valgrind zu erhalten, aber wenn Sie es in einem int main() { return 0; }
-Programm verwenden, werden Sie viele seltsame Fehler und nicht vorhandene Zuordnungen/free erhalten.
Um diese ärgerlichen Fehler zu "verbergen", können Sie die folgenden Schritte ausführen (dies ist eher eine Problemumgehung als eine echte Lösung) (basierend auf dieser Wiki-Seite und einigen Recherchen im Valgrind-Quellcode):
int main() { return 0; }
-Programm.valgrind --leak-check=full --show-reachable=yes --error-limit=no --gen-supressions=all --log-file=minimalraw.log ./minimal
.supp
valgrind Datei:cat ./minimalraw.log | ./parse_valgrind_suppressions.sh > minimal.supp
minimal.supp
Inhalt am Ende von $YOUT_VALGRIND_INSTALLATION_PATH$/lib/default.supp
DateiUnd du bist fertig! Fehler werden ignoriert. Wenn Sie auch die nicht vorhandenen Zuordnungen, Freigaben usw. entfernen möchten, können Sie den Quellcode von valgrind direkt bearbeiten. Oder verwenden Sie heapusage
für die Leckverfolgung
Ich habe gerade eine funktionierende Lösung für die Verwendung von VALGRIND auf meinem Mac gefunden (Mojave 10.14.6). Führen Sie einfach diesen Befehl aus:
brew-Installation --HEAD https://raw.githubusercontent.com/LouisBrunner/valgrind-macos/master/valgrind.rb
(From https://github.com/LouisBrunner/valgrind-macos )
Hoffe, es wird für Sie arbeiten.