Yosemite y Valgrind


110

¿Puedes decirme cómo instalar valgrind en yosemite? Cuando intento instalarlo, aparece "comprobando la versión del kernel ... no compatible (14.0.0) configure: error: Valgrind funciona en Darwin 10.x, 11.x, 12.xy 13.x (Mac OS X 10,6 / 7/8/9) "

No hay una ruta o actualización oficial, y no encontré nada (excepto http://comments.gmane.org/gmane.comp.kde.devel.bugs/1553705 , pero no resolvieron ese problema).


4
Problema conocido con homebrewcon una nota antipático: "Es improbable que sea fijado en un futuro próximo debido a aguas arriba del cronograma de desarrollo"
hrbrmstr

@hrbrmstr, gracias, he resuelto este problema durante algún tiempo instalando Ubuntu en la máquina virtual y luego instalo valgrind en Ubuntu
Kozlovzxc

Respuestas:


287

Como no hay una versión estable que admita Yosemite, puede instalar la última versión de desarrollo con

brew install --HEAD valgrind

5
Este comando ya no funciona. Recibo este mensaje: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
Si bien esta fue la resolución correcta en el momento de la publicación, Valgrind ahora es compatible con OS X Yosemite a través de los canales de lanzamiento documentados de la aplicación.
Rhys Kidd

50

Si bien puede haber sido el caso en los ciclos de lanzamiento anteriores de OS X que Valgrind tomó un período de tiempo antes de lograr un soporte de funciones razonable, el soporte básico de OS X 10.10 ya está disponible en el tronco de Valgrind debido al trabajo significativo en Yosemite previo al lanzamiento.

De la lista de correo:

Recientemente, se han realizado algunos esfuerzos para mejorar el soporte de Valgrind para Yosemite. Si desarrolla en Mac OS, es posible que desee probar el tronco (svn co svn: //svn.valgrind.org/valgrind/trunk) e informar cualquier rotura que tenga. El soporte para Yosemite es lo suficientemente bueno como para que al menos una aplicación gráfica grande (Firefox) funcione correctamente. La compatibilidad con la versión anterior, 10.9 (Mavericks), también se ha mejorado sustancialmente.

Tenga en cuenta que el trabajo se ha centrado únicamente en procesos de 64 bits. 32 bits podría funcionar, y probablemente mejor en Mavericks, pero sospecho que será cada vez más problemático en Yosemite debido a que el soporte del conjunto de instrucciones x86 de 32 bits de Valgrind no ha progresado más allá de SSSE3.

Julian Seward

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

Divulgación completa: soy uno de los nuevos desarrolladores de Valgrind que contribuyó con parches para admitir OS X 10.10


14
+1 por contribuir a valgrind. Lo comparé con mi código. Señaló la causa de una falla de segmentación que me ha estado volviendo loco durante las últimas 24 horas desde que no pude encontrar la causa.
ArtOfWarfare

11

El flujo de trabajo svn de Valerio descargará todas las ramas, lo que consume tiempo y recursos. Un mejor procedimiento es descargar solo el tronco:

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

Al darse cuenta de que descargar esto lleva mucho más tiempo que la fuente de lanzamiento .tar.bz ... ¿es solo la compresión lo que hace una gran diferencia o es realmente la descarga de archivos que de otra manera no lo haría? (Supongo que podría ser el servidor diferente ... o la diferencia entre svn coy curl...)
ArtOfWarfare

+1: Funcionó muy bien. Lo único que cambié fue que hice sudo make installal final en lugar de make install. No estoy seguro de si era necesario o no, ya que no lo intenté a tu manera.
ArtOfWarfare

8

Aquí está mi opinión. Más o menos tenía un mac limpio con xcode instalado. Lo tengo compilando y ejecutándose con lo siguiente:

# 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  

Tenga en cuenta que callgrind_control (de valgrind-3.11.0 SVN) no parece funcionar en OS X, parece un script de perl y la herramienta de línea de comandos que ejecuta (vgdb -l) imprime algo 'inesperado' que ese script no hace ' t analizar correctamente (por lo que no podrá encontrar el otro proceso que se ejecuta con valgrind).

Alternativamente, el script de perl solo llama a vgdb, también podemos hacerlo directamente (solo averigüe su ID de proceso manualmente):

vgdb --pid=2858 instrumentation on

Brillante, esto era exactamente lo que necesitaba para que valgrind se ejecutara en Yosemite 10.10.4. Lo único, el comando anterior que denota el interruptor -disable-tls tiene un carácter de guión Unicode, en lugar del guión ascii normal.
Tim Kane

Feliz de poder ayudar, gracias por señalar el guión (actualizado). También se agregó una solución alternativa para el problema callgrind_control.
Kalmiya

7

Me funcionó en 10.10.1:

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

Probé esto. Me di por vencido mientras descargaba muchas pruebas irrelevantes.
GrantJ

1
Las pruebas de regresión son una parte esencial del programa Valgrind desde la perspectiva de un desarrollador. Si bien aún no se ha realizado un lanzamiento oficial de Valgrind con las mejoras recientes en el soporte de la plataforma OS X, desafortunadamente deberá descargar una versión con las pruebas. Si por alguna razón la descarga de SVN es problemática en su conexión, entonces hay repositorios de GitHub no oficiales: github.com/liquid-mirror/valgrind
Rhys Kidd

7

Todas las soluciones enumeradas aquí fallaron para mí. Lo que finalmente terminó funcionando fue usar puertos mac.

sudo port install valgrind-devel


3

Aquí se explica cómo instalarlo utilizando fuentes alternativas además del svn oficial (porque parece estar disponible de forma intermitente).

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

1) Navegue a este espejo git del svn y descargue la última versión disponible: http://repo.or.cz/w/valgrind.git

2) También necesita VEX, así que obtenga la última versión aquí: http://repo.or.cz/w/vex.git

3) Extrae ambos. Coloque todo el contenido de la VEXcarpeta en una carpeta llamada VEX en el nivel superior del directorio valgrind.

cd al directorio valgrind y ejecute lo siguiente:

Run ./autogen.sh

Run ./configure

Run make

Run sudo make install

valgrind --versionPruébelo ejecutando Debería ejecutar al menos 3.11.0 SVN para que funcione en Yosemite. Valgrind 3.11.0 SVN ejecutándose en OSX Yosemite 10.10.4


3

Lo instalé en mi mac instalando homebrewy luego ejecutando estos 3 comandos en la terminal.

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

PD: Tengo Os X El Capitan (10.11) pero esto también debería funcionar con versiones anteriores.


Cualquier cosa más nueva que eso da: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

Finalmente conseguí que Valgrind trabajara en mi OSX El Capitan 10.11.12 .

La respuesta del usuario Kalmiya funcionó para mí primero después de instalar las herramientas de línea de comandos de Xcode.

Escribe esto en la terminal:

xcode-select --instalar

Ahora siga la publicación de Kalmiya , paso a paso. https://stackoverflow.com/a/30366798/3633475


mi mac book pro tiene la última versión de mac os ya actualizada y es 10.11.3, no 10.11.12. Además, tu sugerencia no funcionó para mí. esto es un errorAssertion 'tst->os_state.pthread - magic_delta == self' failed.
SMMousavi

@SMMousavi El error "Assertion 'test-> os_state.pthread - magic_delta == self'" se ha corregido para Valgrind en la versión de desarrollo de SVN.
Rhys Kidd

@RhysKidd Muchas gracias por la información :)
SMMousavi

0

Aquí hay otra versión de la instalación de svn. Los anteriores no me funcionaron, ya que necesitaba tener automakee autoconfinstalar, lo que no hice, a pesar de que tenía instalada la última versión de las herramientas de línea de comandos de Xcode.

Obtuve lo siguiente de este sitio . También tuve que vincular automakey autoconfdespués de hacer brew install automakey brew install autoconfhaciendo brew link automakey brew link autoconfpara que esto funcione.

# 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
El 10.10.3 todavía no tuvo éxito: $ 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 aunque el / usr / include / mach se creó bajo root, se
enlazó

0

He usado las instrucciones de kalmiya para construir valgrind como un paquete conda para OSX Yosemite. Para aquellos que trabajan con anaconda / conda, simplemente haga

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

Nota al margen: necesitaba instalar las herramientas de línea de comando como se describe a continuación para compilar valgrind.

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


0

Obtuve valgrind en Yosemite compilado, pero tuve que usar un truco para hacerlo. Si bien creo que debería usar xcode-select installpara obtener todas las herramientas de línea de comando (después de lo cual valgrind debería funcionar correctamente), pero si no desea hacer esto (por ejemplo, el tamaño de las herramientas de Xcode es demasiado grande), también puede obtener Darwin OSX código y copie los siguientes archivos a/usr/include/mach

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

Esto permitió una compilación e instalación limpias, aunque tenga en cuenta que es un truco bastante flojo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.