Yosemite i Valgrind

110

Czy możesz mi powiedzieć, jak zainstalować Valgrind na Yosemite? Kiedy próbuję go zainstalować, otrzymuję komunikat "sprawdzanie wersji jądra ... nieobsługiwane (14.0.0) configure: błąd: Valgrind działa na Darwin 10.x, 11.x, 12.x i 13.x (Mac OS X 10,6 / 7/8/9) ”

Nie ma oficjalnej ścieżki ani aktualizacji i nic nie znalazłem (poza http://comments.gmane.org/gmane.comp.kde.devel.bugs/1553705 , ale nie rozwiązali tego problemu).

Kozlovzxc
źródło
4
Znany problem z homebrewniesympatyczną notatką: „Jest mało prawdopodobne, że zostanie naprawiony w najbliższej przyszłości ze względu na harmonogram rozwoju firmy upstream”
hrbrmstr
@hrbrmstr, dziękuję, rozwiązałem ten problem od jakiegoś czasu, instalując Ubuntu na maszynie wirtualnej, a następnie instalując Valgrind na Ubuntu
Kozlovzxc

Odpowiedzi:

287

Ponieważ nie ma stabilnej wersji obsługującej Yosemite, możesz zainstalować najnowszą wersję deweloperską z

brew install --HEAD valgrind
Harry F.
źródło
5
To polecenie już nie działa. Otrzymuję następującą wiadomość:Error: Failed to download resource "valgrind--patch" Download failed: https://gist.githubusercontent.com/jacknagel/cd26a902d72aabd0b51d/raw/1a61a328a87a728dccbeef0594f6fe335e9bf917/valgrind-sdk-paths-Makefile-am.diff
André Caron
1
Chociaż była to poprawna rozdzielczość w momencie publikacji, Valgrind obsługuje teraz OS X Yosemite za pośrednictwem udokumentowanych kanałów wersji aplikacji.
Rhys Kidd
50

Chociaż w poprzednich cyklach wydań OS X mogło się zdarzyć, że Valgrind potrzebował trochę czasu, zanim osiągnął rozsądną obsługę funkcji, podstawowa obsługa OS X 10.10 jest już dostępna w torze Valgrind ze względu na znaczące prace nad przedpremierową wersją Yosemite.

Z listy mailingowej:

Ostatnio podjęto pewne wysiłki, aby poprawić wsparcie Valgrind dla Yosemite. Jeśli tworzysz w systemie Mac OS, możesz chcieć wypróbować łącze trunk (svn co svn: //svn.valgrind.org/valgrind/trunk) i zgłosić wszelkie pojawiające się awarie. Wsparcie dla Yosemite jest na tyle dobre, że przynajmniej jedna duża aplikacja graficzna (Firefox) działa poprawnie. Wsparcie dla poprzedniej wersji, 10.9 (Mavericks), również zostało znacznie ulepszone.

Zauważ, że praca dotyczyła tylko procesów 64-bitowych. 32-bitowy może działać i prawdopodobnie lepiej na Mavericks, ale podejrzewam, że będzie to coraz bardziej problematyczne w Yosemite, ponieważ obsługa 32-bitowego zestawu instrukcji x86 Valgrinda nie przeszła pomyślnie przez SSSE3.

Julian Seward

http://sourceforge.net/p/valgrind/mailman/message/33047840/

Pełne ujawnienie: jestem jednym z nowych programistów Valgrind, którzy wnieśli łatki do obsługi OS X 10.10

Rhys Kidd
źródło
14
+1 za wkład w valgrind. Sprawdziłem to z moim kodem. Wskazał przyczynę błędu segmentacji, który doprowadzał mnie do szaleństwa przez ostatnie 24 godziny, odkąd nie mogłem znaleźć przyczyny.
ArtOfWarfare
11

Przepływ pracy Valerio svn pobierze każdą gałąź, co jest czasochłonne i zasobochłonne. Lepszą procedurą jest pobranie samego pnia:

svn co svn://svn.valgrind.org/valgrind/trunk valgrind
cd valgrind
./autogen.sh
./configure
make
make install
Ed Millard
źródło
Zauważ, że pobieranie tego zajmuje znacznie więcej czasu niż źródło wydania .tar.bz ... czy to tylko kompresja robi tak dużą różnicę, czy też faktycznie pobiera pliki, których inaczej by nie zrobił? (Myślę, że może to być inny serwer ... lub różnica między svn coi curl...)
ArtOfWarfare,
+1: Działa świetnie. Jedyną rzeczą, którą zmieniłem, było to, że zrobiłem sudo make installna końcu zamiast make install. Nie jestem pewien, czy to było konieczne, czy nie, ponieważ nie próbowałem tego na swój sposób.
ArtOfWarfare
8

Oto moje spojrzenie na to. Miałem mniej więcej czystego Maca z zainstalowanym xcode. Mam to, kompilując i uruchamiając z następującymi elementami:

# build/install autoconf/automake/libtool so that 'autogen' works
curl -OL http://ftpmirror.gnu.org/autoconf/autoconf-2.69.tar.gz
tar -xzf autoconf-2.69.tar.gz 
cd autoconf-2.69
./configure && make && sudo make install
cd ..

curl -OL http://ftpmirror.gnu.org/automake/automake-1.14.tar.gz
tar -xzf automake-1.14.tar.gz
cd automake-1.14
./configure && make && sudo make install
cd..

curl -OL http://ftpmirror.gnu.org/libtool/libtool-2.4.2.tar.gz
tar -xzf libtool-2.4.2.tar.gz
cd libtool-2.4.2
./configure && make && sudo make install
cd ..

svn co svn://svn.valgrind.org/valgrind/trunk valgrind
cd valgrind
./autogen.sh
# important: configure-params, otherwise make ends in errors 
./configure -disable-tls --enable-only64bit --build=amd64-darwin 
make
# sudo, otherwise it fails due to permissions 
sudo make install  

Zauważ, że callgrind_control (z Valgrind-3.11.0 SVN) nie działa na OS X, wygląda jak skrypt Perla, a narzędzie wiersza poleceń, które uruchamia (vgdb -l), drukuje coś „nieoczekiwanego”, czego ten skrypt nie robi ” t poprawnie analizuje (więc nie będzie w stanie znaleźć innego procesu działającego z valgrind).

Alternatywnie, skrypt Perla po prostu wywołuje vgdb, możemy to również zrobić bezpośrednio (po prostu sprawdź ręcznie identyfikator procesu):

vgdb --pid=2858 instrumentation on
kalmiya
źródło
Świetnie , to było dokładnie to , czego potrzebuję, aby Valgrind działał na Yosemite 10.10.4 Jedyna rzecz, powyższe polecenie oznaczające przełącznik -disable-tls ma znak łącznika Unicode zamiast zwykłego łącznika ascii.
Tim Kane,
Cieszę się, że mogłem pomóc - dzięki za wskazanie łącznika (zaktualizowałem go). Dodano również obejście problemu callgrind_control.
kalmiya,
7

Pracował dla mnie 10.10.1:

svn co svn://svn.valgrind.org/valgrind
cd valgrind
./autogen.sh
./configure
make
make install
Valerio Schiavoni
źródło
Próbowałem tego. Zrezygnowałem z pobierania wielu nieistotnych testów.
GrantJ
1
Testy regresji są istotną częścią programu Valgrind z perspektywy dewelopera. Chociaż oficjalna wersja Valgrind nie została jeszcze wydana z ostatnimi ulepszeniami obsługi platformy OS X, niestety będziesz musiał pobrać wersję z testami. Jeśli z jakiegoś powodu pobieranie SVN jest kłopotliwe z połączeniem, istnieją nieoficjalne repozytoria GitHub: github.com/liquid-mirror/valgrind
Rhys Kidd
7

Wszystkie wymienione tutaj rozwiązania zawiodły dla mnie. Ostatecznie udało się użyć portów Mac.

sudo port install valgrind-devel

bigtunacan
źródło
3

Oto jak zainstalować go przy użyciu alternatywnych źródeł oprócz oficjalnego svn (ponieważ wydaje się być sporadycznie dostępny).

https://crispyappstudiosblog.wordpress.com/2015/07/07/installing-valgrind-on-osx-yosemite/

1) Przejdź do tego serwera lustrzanego git serwera svn i pobierz najnowszą dostępną wersję: http://repo.or.cz/w/valgrind.git

2) Potrzebujesz również VEX, więc pobierz najnowszą wersję tutaj: http://repo.or.cz/w/vex.git

3) Wyodrębnij oba z nich. Umieść całą zawartość VEXfolderu w folderze o nazwie VEX na najwyższym poziomie katalogu valgrind.

cd do katalogu valgrind i wykonaj następujące czynności:

Run ./autogen.sh

Run ./configure

Run make

Run sudo make install

Przetestuj, uruchamiając valgrind --versionPowinieneś mieć co najmniej 3.11.0 SVN, aby działał w Yosemite. Valgrind 3.11.0 SVN działający na OSX Yosemite 10.10.4

user43633
źródło
3

Zainstalowałem go na moim Macu, instalując, homebrewa następnie uruchamiając te 3 polecenia w terminalu.

  1. brew update
  2. brew doctor
  3. brew install --HEAD valgrind

PS: Mam Os X El Capitan (10.11), ale powinno to działać również z poprzednimi wersjami.


źródło
Wszystko nowsze niż to daje:valgrind: This formula either does not compile or function as expected on macOS versions newer than El Capitan due to an upstream incompatibility.
Alex
2

W końcu udało mi się przekonać Valgrinda do pracy na moim OSX El Capitan 10.11.12 .

Odpowiedź użytkownika Kalmiya zadziałała dla mnie najpierw po zainstalowaniu narzędzi wiersza poleceń Xcode.

Wpisz to w terminalu:

xcode-select --install

Teraz postępuj zgodnie ze wskazówkami Kalmiyi , krok po kroku. https://stackoverflow.com/a/30366798/3633475

Raphael
źródło
moja książka mac pro ma już zaktualizowaną najnowszą wersję systemu Mac OS i jest to 10.11.3, a nie 10.11.12! również twoja sugestia nie zadziałała dla mnie. to jest błądAssertion 'tst->os_state.pthread - magic_delta == self' failed.
SMMousavi
@SMMousavi Błąd "Assertion 'test-> os_state.pthread - magic_delta == self'" został naprawiony dla Valgrind w wersji rozwojowej SVN.
Rhys Kidd
@RhysKidd Wielkie dzięki za informacje :)
SMMousavi
0

Oto kolejne podejście do instalacji svn. Poprzednie nie działały u mnie, ponieważ musiałem je mieć automakei autoconfzainstalować, czego nie zrobiłem, mimo że miałem zainstalowaną najnowszą wersję narzędzi wiersza poleceń Xcode.

Otrzymałem następujące informacje z tej witryny . Musiałem też połączyć automakei autoconfpo wykonaniu brew install automakei brew install autoconfwykonaniu brew link automakei brew link autoconfaby to zadziałało.

# Check out their repo...
$ svn co svn://svn.valgrind.org/valgrind/trunk valgrind-trunk
# and hop into it.
$ cd valgrind-trunk

# You need to have autoconf and automake installed to build Valgrind
# This example uses Homebrew to install these dependencies
# (MacPorts should also work)
# (Permission error? add sudo!)
$ brew install automake
$ brew install autoconf

# run autogen.sh in valgrind-trunk
$ ./autogen.sh

# Tricky, there are some hard wired paths in the Valgrind sources.
# You need to symlink the mach folder in your XCode SDK to /usr/include/mach
# Be sure to use the proper Xcode SDK "MacOSX10.10.sdk" in the path!
$ ln -sv /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/mach /usr/include/mach

# Run configure + set install paths in valgrind-trunk
$ ./configure --prefix=/usr/local

# Run Make and make install (permission error? add sudo!) in valgrind-trunk
$ make
$ make install

# Check it works
$ valgrind --version
valgrind-3.11.0.SVN
Kyle Falconer
źródło
1
W dniu 10.10.3 nadal bez sukcesu: $ make ... Making all in coregrind make[2]: *** No rule to make target '/usr/include/mach/mach_vm.defs', needed 'by m_mach/mach_vmUser.c'. Stop. make[1]: *** [all-recursive] Error 1 make: *** [all] Error 2 chociaż plik / usr / include / mach został utworzony w katalogu głównym, z dowiązaniem symbolicznym zgodnie z opisem itp.
HopeNick
0

Użyłem instrukcji Kalmiyi, aby zbudować valgrind jako pakiet conda dla OSX Yosemite. Dla tych, którzy pracują z anakondą / condą, po prostu zrób

conda install -c https://conda.binstar.org/groakat valgrind

Uwaga dodatkowa: Musiałem zainstalować narzędzia wiersza poleceń, jak opisano poniżej, aby skompilować Valgrind.

https://stackoverflow.com/a/30471647/2156909

PR
źródło
0

Skompilowałem Valgrind na Yosemite, ale musiałem użyć do tego hacka. Chociaż myślę, że powinieneś używać, xcode-select installaby uzyskać wszystkie narzędzia wiersza poleceń (po których Valgrind powinien wykonać poprawnie), ale jeśli nie chcesz tego robić (np. Rozmiar narzędzi Xcode jest zbyt duży), możesz również pobrać Darwin OSX kod i skopiuj następujące pliki do/usr/include/mach

   mach_vm.defs
    task.defs
    thread_act.defs
    vm_map.defs

Pozwoliło to na czystą kompilację i instalację, chociaż zauważ, że jest to raczej luźny hack.

Pete855217
źródło