Йосемити и Валгринд


110

Подскажите, как установить valgrind на yosemite? Когда я пытаюсь установить его, я получаю "проверку версии ядра ... неподдерживаемой (14.0.0)" configure: error: Valgrind работает на Darwin 10.x, 11.x, 12.x и 13.x (Mac OS X 10,6 / 7/8/9) "

Нет официального пути или обновления, и я ничего не нашел (кроме http://comments.gmane.org/gmane.comp.kde.devel.bugs/1553705 , но они не решили эту проблему).


4
Известная проблема с homebrewнеприятной пометкой: «Маловероятно, что она будет исправлена ​​в ближайшем будущем из-за графика разработки
апстрима

@hrbrmstr, спасибо, я решил эту проблему на некоторое время, установив Ubuntu на виртуальную машину, а затем установив valgrind на Ubuntu
Kozlovzxc

Ответы:


287

Поскольку нет стабильной версии, поддерживающей Yosemite, вы можете установить последнюю версию для разработки с помощью

brew install --HEAD valgrind

5
Эта команда больше не работает. Я получаю это сообщение:Error: Failed to download resource "valgrind--patch" Download failed: https://gist.githubusercontent.com/jacknagel/cd26a902d72aabd0b51d/raw/1a61a328a87a728dccbeef0594f6fe335e9bf917/valgrind-sdk-paths-Makefile-am.diff
Андре Карон

1
Хотя на момент публикации это было правильное разрешение, теперь Valgrind поддерживает OS X Yosemite через документированные каналы выпуска приложения.
Рис Кидд,

50

В то время как в прошлых циклах выпуска OS X, возможно, было так, что Valgrind потребовалось некоторое время для достижения разумной поддержки функций, базовая поддержка OS X 10.10 уже доступна в магистрали Valgrind из-за значительной работы над предварительным выпуском Yosemite.

Из списка рассылки:

Недавно были предприняты некоторые попытки улучшить поддержку Valgrind Йосемити. Если вы разрабатываете на Mac OS, вы можете попробовать транк (svn co svn: //svn.valgrind.org/valgrind/trunk) и сообщить о любой поломке, которую вы получите. Поддержка Yosemite достаточно хороша, чтобы хотя бы одно большое графическое приложение (Firefox) работало нормально. Поддержка предыдущей версии 10.9 (Mavericks) также существенно улучшена.

Обратите внимание, что работа была нацелена только на 64-битные процессы. 32-битный может работать и, вероятно, лучше на Mavericks, но я подозреваю, что это будет все более проблематично для Yosemite из-за того, что поддержка 32-битного набора инструкций Valgrind x86 не продвинулась, пройдя SSSE3.

Джулиан Сьюард

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

Полное раскрытие: я один из новых разработчиков Valgrind, внесших исправления для поддержки OS X 10.10.


14
+1 за вклад в valgrind. Проверил это против моего кода. Он указал на причину ошибки сегментации, которая сводила меня с ума последние 24 часа, так как я не мог найти причину.
ArtOfWarfare

11

Рабочий процесс Валерио svn будет загружать каждую ветку, что требует времени и ресурсов. Лучше всего загрузить только транк:

svn co svn://svn.valgrind.org/valgrind/trunk valgrind
cd valgrind
./autogen.sh
./configure
make
make install

Заметив, что загрузка занимает гораздо больше времени, чем это было с исходным кодом .tar.bz ... это просто сжатие имеет такое большое значение, или это действительно загрузка файлов, которых в противном случае не было бы? (Я предполагаю, что это может быть другой сервер ... или разница между svn coи curl...)
ArtOfWarfare

+1: Сработало отлично. Единственное, что я изменил, - это я сделал sudo make installв конце вместо make install. Не уверен, было ли это необходимо или нет, потому что я не пробовал это по-вашему.
ArtOfWarfare

8

Вот мой взгляд на это. У меня был более-менее чистый макинтош с установленным xcode. Получил его компилирование и запуск со следующим:

# 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  

Обратите внимание, что callgrind_control (из valgrind-3.11.0 SVN), похоже, не работает в OS X, выглядит как perl-скрипт, а инструмент командной строки, который он запускает (vgdb -l), печатает что-то «неожиданное», чего этот скрипт не делает » t правильно проанализировать (поэтому он не сможет найти другой процесс, работающий с valgrind).

В качестве альтернативы сценарий perl просто вызывает vgdb, мы также можем сделать это напрямую (просто определите свой идентификатор процесса вручную):

vgdb --pid=2858 instrumentation on

Великолепно, это было именно то , что мне нужно, чтобы valgrind работал на Yosemite 10.10.4 Единственное, что в приведенной выше команде, обозначающей переключатель -disable-tls, используется символ дефиса Unicode, а не обычный дефис ascii.
Тим Кейн

Счастлив, что смог помочь - спасибо, что указал на дефис (обновил его). Также добавлен способ решения проблемы callgrind_control.
kalmiya

7

У меня сработало 10.10.1:

svn co svn://svn.valgrind.org/valgrind
cd valgrind
./autogen.sh
./configure
make
make install

Пробовал это. Я сдался, скачивая много нерелевантных тестов.
GrantJ

1
Регрессионные тесты являются важной частью программы Valgrind с точки зрения разработчика. Хотя официальный выпуск Valgrind с недавними улучшениями поддержки платформы OS X еще не выпущен, к сожалению, вам необходимо загрузить версию с тестами. Если по какой-либо причине загрузка SVN затрудняет ваше соединение, то есть неофициальные репозитории GitHub: github.com/liquid-mirror/valgrind
Рис Кидд

7

Все перечисленные здесь решения не помогли мне. Что в конечном итоге сработало, так это использовать порты Mac.

sudo port install valgrind-devel


3

Вот как его установить, используя альтернативные источники, помимо официального svn (потому что он, кажется, периодически доступен).

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

1) Перейдите к этому git-зеркалу svn и загрузите последнюю доступную версию: http://repo.or.cz/w/valgrind.git

2) Вам также понадобится VEX, поэтому скачайте последнюю версию здесь: http://repo.or.cz/w/vex.git

3) Извлеките их обоих. Поместите все содержимое VEXпапки в папку с именем VEX на верхнем уровне каталога valgrind.

cd в каталог valgrind и выполните следующее:

Run ./autogen.sh

Run ./configure

Run make

Run sudo make install

Протестируйте его, запустив. valgrind --versionЧтобы он работал на Yosemite , у вас должен быть установлен SVN не ниже 3.11.0. Valgrind 3.11.0 SVN работает на OSX Yosemite 10.10.4


3

Я установил его на свой Mac, установив homebrewи запустив эти 3 команды в терминале.

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

PS: У меня Os X El Capitan (10.11), но это должно работать и с предыдущими версиями.


Все, что новее, дает: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

Наконец-то я заставил Valgrind поработать на моем OSX El Capitan 10.11.12 .

Ответ пользователя Kalmiya работал у меня сначала после того, как я установил инструменты командной строки Xcode.

Введите это в терминал:

xcode-select - установить

Теперь шаг за шагом следуйте посту Калмии . https://stackoverflow.com/a/30366798/3633475


В моем Mac Book Pro уже обновлена ​​последняя версия Mac OS, и это 10.11.3, а не 10.11.12! также ваше предложение не сработало для меня. это ошибкаAssertion 'tst->os_state.pthread - magic_delta == self' failed.
SMMousavi

@SMMousavi Ошибка "Assertion 'test-> os_state.pthread - magic_delta == self'" была исправлена ​​для Valgrind в разрабатываемой версии SVN.
Рис Кидд,

@RhysKidd Спасибо за информацию :)
SMMousavi

0

Вот еще один вариант установки svn. Предыдущие у меня не работали, так как мне нужно было иметь automakeи autoconfустановить, чего я не делал, хотя у меня была установлена ​​последняя версия инструментов командной строки Xcode.

Я получил следующее с этого сайта . Мне также пришлось связать automakeи autoconfпосле того, как я делал brew install automakeи brew install autoconfделаю, brew link automakeи brew link autoconfчтобы это работало.

# 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

1
10.10.3 все еще безуспешно: $ 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 хотя / usr / include / mach был создан под root, с символической ссылкой, как описано, и т. Д.
HopeNick

0

Я использовал инструкции Kalmiya для сборки valgrind в качестве пакета conda для OSX Yosemite. Для тех, кто работает с anaconda / conda, просто сделайте

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

Примечание: мне нужно было установить инструменты командной строки, как описано ниже, чтобы скомпилировать valgrind.

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


0

Я скомпилировал valgrind на Yosemite, но для этого пришлось использовать хак. Хотя я думаю, что вам следует использовать xcode-select installвсе инструменты командной строки (после чего valgrind должен работать правильно), но если вы не хотите этого делать (например, слишком большой размер инструментов Xcode), вы также можете получить Darwin OSX код и скопируйте следующие файлы в/usr/include/mach

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

Это позволило выполнить чистую компиляцию и установку, хотя, заметьте, это довольно слабый прием.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.