66 votes

Comment installer Valgrind sur macOS Mojave(10.14) avec Homebrew ?

J'ai essayé d'installer Valgrind avec brew install Valgrind et a obtenu :

valgrind: This formula either does not compile or function as expected
on macOS versions newer than Sierra due to an upstream
incompatibility. 
Error: An unsatisfied requirement failed this build.

J'ai essayé brew install --HEAD Valgrind .

Au lieu de cela, après avoir installé avec succès les dépendances autoconf , automake y libtool quand il essaie d'installer valgrind, j'obtiens une erreur de configuration :

Valgrind works on Darwin 10.x, 11.x, 12.x, 13.x, 14.x, 15.x, 16.x and
17.x (Mac OS X 10.6/7/8/9/10/11 and macOS 10.12/13)

Mon système d'exploitation est macOS Mojave (10.14), cela signifie-t-il que je ne peux pas installer un Valgrind fonctionnel avec Homebrew actuellement ?

0 votes

Essayez peut-être brew edit valgrind et remplacez " sourceware.org/git/valgrind.git " avec "git://sourceware.org/git/valgrind.git" dans la section head de la formule.

1 votes

J'ai essayé mais les mêmes messages s'affichent toujours...

2 votes

Voici le dernier statut que j'ai pu trouver. tl;dr : ce n'est pas encore prêt. mail-archive.com/kde-bugs-dist@kde.org/msg285805.html

35voto

alex.ukf Points 31

Une solution de contournement (plutôt pénible) d'installation à partir de la source basée sur ce patch , ce poste y cette réponse .

$ 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

Si vous obtenez l'erreur suivante : No rule to make target '/usr/include/mach/mach_vm.defs’ vous devrez exécuter xcode-select --install . Vous devrez peut-être installer Xcode depuis la boutique d'applications si vous ne l'avez pas déjà. Une fois que c'est fait, vous devrez modifier le fichier coregrind/Makefile :

Recherchez :

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

Après avoir vérifié que le dossier ci-dessous existe, préfixez chaque ligne avec :

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk

Le résultat final devrait être :

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

Exécutez maintenant make à nouveau et les inclusions devraient être trouvées. Mais cela ne signifie pas nécessairement qu'il sera compilé. J'ai obtenu l'erreur suivante :

vg_preloaded.c:136:19: error: expected ';' before 'const'
 __private_extern__ const char *__crashreporter_info__ = "Instrumented by Valgrind " VERSION;

Une solution consiste à ajouter la ligne suivante :

#define __private_extern__ extern

aux fichiers suivants :

  • coregrind/m_syscall.c
  • coregrind/m_syswrap/syswrap-darwin.c
  • coregrind/vg_preloaded.c

Enfin, vous devez croiser les doigts en espérant qu'aucune autre erreur n'apparaisse :

$ make
$ make install

4 votes

J'ai pu installer le valgrind en utilisant les instructions ci-dessus sur MacOS Mojave 10.14.13 sans ajouter un correctif aux fichiers : coregrind/m_syscall.c, coregrind/m_syswrap/syswrap-darwin.c, coregrind/vg_preloaded.c

2 votes

En outre, vous devrez peut-être modifier "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk" pour refléter la version de votre sdk. Dans mon cas, c'était "MacOSX10.11.sdk". Par conséquent, dans mon cas, le chemin était "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk".

45 votes

Malheureusement, cela n'a pas fonctionné pour moi. Mac OS 10.14.4. Je me suis retrouvé avec cette erreur "Undefined symbols for architecture x86_64 : "_mach_msg_destroy", referenced from : __kernelrpc_mach_vm_allocate in libcoregrind-amd64-darwin.a(libcoregrind_amd64_darwin_a-mach_vmUser.o) .."

31voto

Piotr Sowa Points 349

Vous pouvez utiliser la version expérimentale de Valgrind pour macOS 10.14.5 Mojave à l'adresse suivante :

https://github.com/sowson/valgrind

La commande pour l'utiliser est :

brew install --HEAD https://raw.githubusercontent.com/sowson/valgrind/master/valgrind.rb

Il est encore expérimental et nécessite un peu de travail mais pour des projets simples, il fonctionne déjà... Profitez-en !

0 votes

Aujourd'hui j'ai synchronisé avec le repo original de valgrind avec le patch et testé avec Mojave 10.14.6 le truc c'est que ça marche toujours pour les projets simples mais pas pour un projet complexe j'ai peut être quelqu'un qui s'inscrit comme contributeur pour aider ? :D.

0 votes

Il est dit Error: The following directories are not writable by your user: /usr/local/share/man/man5

14voto

Meta.x.gdb Points 163

Addition : J'ai trouvé celui-ci qui a fonctionné pour moi sur mon OSX 10.14

brew install --HEAD https://raw.githubusercontent.com/LouisBrunner/valgrind-macos/master/valgrind.rb

Une branche qui travaille pour corriger OSX. Quelque chose pour nous dépanner jusqu'à ce que nous ayons une vraie version de valgrind.

1 votes

La construction de ce produit échoue malheureusement sur macOS 10.14.6 avec Xcode 11.2.1.

9voto

J'ai le même problème. Il semble que valgrind ne soit pas compatible avec le dernier macOS (10.14 Mojave). J'ai essayé de l'installer à la manière de High Sierra ( https://www.gungorbudak.com/blog/2018/04/28/how-to-install-valgrind-on-macos-high-sierra/ ) et j'ai obtenu le même résultat que celui que vous avez décrit. La seule solution que je peux vous proposer pour le moment est de travailler sur une machine virtuelle ( https://www.virtualbox.org/ ) ou en utilisant Docker ( https://www.gungorbudak.com/blog/2018/06/13/memory-leak-testing-with-valgrind-on-macos-using-docker-containers/ ).

9voto

heiner Points 302

Comme d'autres l'ont mentionné, Louis Brunner maintient une version de travail à l'adresse suivante https://github.com/LouisBrunner/valgrind-macos .

brew tap LouisBrunner/valgrind
brew install --HEAD LouisBrunner/valgrind/valgrind

Cela a fonctionné pour moi pour MacOS 10.15.7 Catalina.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X