Valgrind es una aplicación de código abierto que proporciona a los desarrolladores de software con una de las mejores y más utilizadas herramientas para la detección automática de roscado y de gestión de la memoria de fallos en sus proyectos.
En otras palabras, puede ser usado para acelerar en gran medida sus programas. It & rsquo; la aplicación de línea de comandos sa las carreras sólo en la consola Linux o un terminal de X11 emulator.State-of-the-art características y funciones functionalityKey incluyen detector de memoria de errores, perfilador montón, rama-predicción y perfilador de memoria caché, detectores de error hilo, así como de generación de llamada-rama gráfica-predicción y perfilador de memoria caché.
Además, viene con varias herramientas experimentales, como la gama invadida detector mundial y la pila, generador de bloques de vector básico SimPoint, y segundo perfilador montón.
La aplicación es compatible con una amplia gama de programas escritos en diferentes lenguajes de programación, como C, C ++, Python, Perl, Java, Fortran, código ensamblador, y muchos otros.
It & rsquo; s compone de varias herramientas útiles para la depuración de la memoria, de perfiles y detección de fugas de memoria. Estos incluyen Memcheck, Addrcheck, Cachegrind, Callgrind, Ninguno, Macizo, exp-sgcheck, exp-BBV, exp-dat, Helgrind y DRD.
Funciona bien en GNU / Linux, Android, los sistemas operativos Mac OS X. Arquitecturas soportadas incluyen x86, AMD64, ARM, PPC32, PPC64, s390x, MIPS32, MIPS64 y ARM.Availability y bajo el programa hoodThe se pueden descargar desde la sección dedicada (ver arriba) sólo como un archivo comprimido de origen, que puede ser configure, compilado e instalado en cualquier sistema operativo basado en Linux.
Sin embargo, los usuarios pueden instalar Valgrind directamente de los repositorios de software por defecto de sus distribuciones de Linux. Sistemas operativos soportados son Debian, Red Hat, Mandriva, openSUSE, Arch Linux, Slackware, Gentoo, y la conclusión others.Bottom LINEIN, Valgrind es una aplicación única que debe ser utilizado por cualquier desarrollador de software para acelerar sus programas y la eliminación de errores de memoria y desagradables fugas.
It & rsquo; s un software ganador de premios que se ha utilizado con éxito para fines de investigación en el MIT, Cambridge, la Universidad de Berkeley, Carnegie Mellon, UC Santa Barbara, Cornell, y muchas otras universidades de todo el mundo
- 3.10.1 es una versión de corrección de errores. Se corrige varios bugs reportados en 3.10.0 y backports correcciones para todas las instrucciones dadas por desaparecidas AArch64 ARMv8 y llamadas al sistema desde el tronco. Si empaqueta o entrega 3.10.0 para uso de otros, es posible que desee considerar la posibilidad de actualizar a 3.10.1 lugar.
¿Qué hay de nuevo en la versión 3.10.0:
- 3.10.0 es una versión de función con muchas mejoras y la colección habitual de correcciones de errores.
- Esta versión es compatible con X86 / Linux, AMD64 / Linux, ARM32 / Linux, ARM64 / Linux, PPC32 / Linux, PPC64BE / Linux, PPC64LE / Linux, s390x / Linux, MIPS32 / Linux, MIPS64 / Linux, ARM / Android, MIPS32 / Android, X86 / Android, X86 / MacOSX 10.9 y AMD64 / MacOSX 10.9. Soporte para MacOSX 10.8 y 10.9 se mejora significativamente en relación con la liberación 3.9.0.
¿Cuál es nuevo en la versión 3.9.0:
- Esta versión es compatible con X86 / Linux, AMD64 / Linux , ARM / Linux, PPC32 / Linux, PPC64 / Linux, s390x / Linux, MIPS32 / Linux, MIPS64 / Linux, ARM / Android, X86 / Android, X86 / MacOSX 10.7 y AMD64 / MacOSX 10.7. Soporte para Mac OS X 10.8 se mejora significativamente en relación con la liberación 3.8.0.
- CAMBIOS DE PLATAFORMA:
- Soporte para MIPS64 LE y estar ejecutando Linux. Valgrind ha sido probado en MIPS64 Debian Squeeze y Debian Wheezy distribuciones.
- Soporte para MIPS DSP ASE en plataformas MIPS32.
- Soporte para instrucciones s390x decimal de coma flotante en los hosts que tienen la facilidad de DFP instalado.
- Soporte para POWER8 (Power ISA 2,07) instrucciones
- Soporte para instrucciones AVX2 Intel. Este servicio está disponible sólo en código de 64 bits.
- El apoyo inicial para Intel transaccionales Extensiones de sincronización, tanto RTM y HLE.
- El apoyo inicial para Hardware Memoria Transaccional en POWER.
- Soporte mejorado para MacOSX 10.8 (64 bits). Memcheck puede ahora ejecutar grandes aplicaciones GUI bastante bien.
- CAMBIOS DE HERRAMIENTAS:
- Memcheck:
- Las mejoras en el manejo de código vectorizado, dando lugar a un número significativamente menor informes de error falsos. Es necesario utilizar la bandera --partial cargas-ok = yes para obtener los beneficios de estos cambios.
- Un mejor control sobre el comprobador de fugas. Ahora es posible especificar qué tipo de fugas (definido / indirecta / posible / alcanzable) se debe mostrar, que debe considerarse como errores, y que debe ser suprimida por una supresión de fugas dado. Esto se hace utilizando las opciones --show-leak-tipo = kind1, kind2, .., --errors-para-leak-tipo = kind1, kind2, .. y un opcional de & quot; leak-tipo de partidos: & quot; línea en entradas de supresión, respectivamente. Tenga en cuenta que las supresiones de fugas generadas contienen esta nueva línea y por lo tanto son más específicas que en versiones anteriores. Para obtener el mismo comportamiento que las versiones anteriores, quite el & quot; coincida-leak-tipo: & quot; línea de supresiones generados antes de usarlos.
- Reducción & quot; posible fuga & quot; informes del corrector de fugas mediante el uso de una mejor heurística. La heurística disponibles proporcionan una detección de punteros interiores válidos para std :: stdstring, a las nuevas [] El despliegue asignados con elementos que tienen destructores y punteros interiores que apuntan a una parte interior de un objeto de C ++ utilizando la herencia múltiple. Se pueden seleccionar individualmente utilizando la opción --leak-check-heurística = heur1, heur2, ...
- Un mejor control de la adquisición stacktrace para bloques heap-asignado. El uso de la opción --keep-stacktraces, es posible controlar de forma independiente si un seguimiento de pila se adquiere para cada asignación y cancelación de asignación. Esto puede ser usado para crear un mejor & quot; usar después libre & quot; errores o para disminuir el consumo de recursos de Valgrind registrando menos información.
- Mejor notificación del uso de la supresión de fugas. La lista de supresiones utilizados (que se muestra cuando se le da la opción -v) ahora muestra, para cada uno de supresiones de fugas, cuántos bloques y los bytes se suprime durante la última búsqueda de fugas.
- Helgrind:
- falsos errores resultantes de la utilización de los mutex estáticamente inicializado y variables de condición (PTHREAD_MUTEX_INITIALISER, etc) se han eliminado.
- falsos errores resultantes de la utilización de pthread_cond_waits ese tiempo de espera, se han eliminado.
- OTROS CAMBIOS:
- Algunos intentan requisitos de espacio melodía de Valgrind a las capacidades esperadas de la meta:
- El tamaño predeterminado de la caché de traducción se ha reducido de 8 sectores a 6 en las plataformas Android, ya que cada sector ocupa aproximadamente 40 MB al utilizar Memcheck.
- El tamaño predeterminado de la caché de traducción se ha aumentado a 16 sectores en todas las demás plataformas, lo que refleja el hecho de que las grandes aplicaciones requieren la instrumentación y el almacenamiento de grandes cantidades de código. Por razones similares, el número de segmentos de memoria asignada que pueden ser rastreados se ha incrementado por un factor de 6.
- En todos los casos, el número máximo de sectores en la caché de traducción puede ser controlado por la nueva bandera --num-transtab-sectores.
- Cambios en la información de depuración (números de línea, etc.) se lee:
- Valgrind ya no mmaps temporalmente todo el objeto para leer de él. En su lugar, la lectura se realiza a través de un pequeño tampón de tamaño fijo. Esto evita la memoria virtual de picos de uso cuando Valgrind lee debuginfo de grandes objetos compartidos.
- Una nueva depuración remota del servidor experimental información. Valgrind puede leer información de depuración de un equipo diferente (por lo general, una gran cantidad de construcción) donde se almacenan debuginfo objetos. Esto puede ahorrar mucho tiempo y problemas al ejecutar Valgrind en objetivos con recursos limitados (teléfonos, tabletas) cuando los objetos completos debuginfo se almacenan en otro lugar. Esto es posible gracias al --debuginfo-server = opción.
- La consistencia de cheques entre los objetos principales y de depuración se puede desactivar mediante la opción --allow-coincidentes-debuginfo.
- Pila desenrollar los escaneos pila, en ARM. El desenrollar los escaneos pila puede recuperar seguimientos de pila en algunos casos cuando los mecanismos de desenrollado normales fallan. Exploración Pila se describe mejor como & quot; un hack & quot desagradable, peligroso y engañoso; y lo que está desactivado por defecto. Utilice --unw-stack-scan-umbral y --unw-pila-SCAN-marcos para permitir y controlar.
- Detección y fusión de los ciclos del marco de pila recursiva. Cuando el programa tiene algoritmos recursivos, esto limita la memoria utilizada por Valgrind para seguimientos de pila registrados y evita la grabación de las llamadas repetidas sin interés. Esto es controlado por la opción de línea de comandos --merge-recursivo-marco y por el comando monitor de & quot; v.set fusionar-recursivas-marcos & quot;.
- Nombre de archivo y los números de línea para supresiones utilizados. La lista de supresiones utilizados (se muestra cuando se le da la opción -v) ahora muestra, para cada uno de supresión se utiliza, el nombre de archivo y número de línea donde se define la represión.
- Las nuevas y modificadas GDB funciones del supervisor de servidor:
- valgrind.h tiene una nueva petición del cliente, VALGRIND_MONITOR_COMMAND, que se puede utilizar para ejecutar comandos de monitor gdbserver desde el programa cliente.
- Un nuevo comando monitor, & quot;. V.info open_fds & quot ;, que da la lista de descriptores de archivos abiertos y detalles adicionales
- Un mensaje opcional en el & quot; v.info n_errs_found & quot; comando, por ejemplo & quot monitor;. v.info prueba n_errs_found 1234 & quot ;, terminado permitiendo una cadena de comentario que se añade a la salida del proceso, tal vez con el propósito de separar los errores de las diferentes pruebas o fases de prueba
- Un nuevo comando monitor de & quot; v.info execontext & quot; que muestra información sobre los seguimientos de pila registrados por Valgrind.
- Un nuevo comando monitor de & quot; v.do expensive_sanity_check_general & quot; para ejecutar algunas comprobaciones de consistencia interna.
- Nueva bandera --sigill-diagnóstico para controlar si un mensaje de diagnóstico se imprime cuando el JIT se encuentra con una instrucción que no se puede traducir. El comportamiento real - la entrega de SIGILL a la aplicación -. Es sin cambios
- La cantidad máxima de memoria que Valgrind puede utilizar en 64 objetivos de bits se ha aumentado de 32 GB a 64 GB. Esto debería hacer que sea posible ejecutar aplicaciones en Memcheck que nativamente requieren hasta aproximadamente 35 GB.
- Errores solucionados:
- Los siguientes errores han sido corregidos o resueltas. Tenga en cuenta que & quot; n-i-BZ & quot;
- significa & quot; no en Bugzilla & quot; - Es decir, un error que fue reportado a nosotros
- pero nunca llegó una entrada de Bugzilla. Le animamos a presentar errores en
- Bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) más
- que enviar los desarrolladores (o listas de correo) directamente - bugs que
- No se introducen en Bugzilla tienden a quedar olvidado o ignorado.
- Para ver detalles de un error dado, visite https://bugs.kde.org/show_bug.cgi?id=XXXXXX donde XXXXXX es el número de error que se enumeran a continuación.
- 123837 sistema: cuarto argumento es opcional, dependiendo de cmd
- 135425 memcheck debe decirle donde Freed bloques eran Mallocd
- 164485 VG_N_SEGNAMES y VG_N_SEGMENTS son (aún) demasiado pequeño
- 207.815 Añade algunos de los ioctls DRM a syswrap-linux.c
- 251569 vex amd64- & gt; IR: 0xF 0x1 0xF9 0xBF 0x90 0xD0 0x3 0x0 (RDTSCP)
- 252955 imposible compilar con ccache
- 253519 Memcheck informa puntero auxv accede como no válido lee.
- 263 034 Crash al cargar algunos binarios PPC64
- 269 599 Aumento traza más profundo
- 274695 s390x: Apoyo & quot; comparan a / de lógica & quot; instrucciones (z196)
- 275800 s390x: Autodetectar info caché (parte 2)
- 280271 Valgrind reporta posibles pérdidas de memoria en std todavía alcanzable :: string
- 284540 Memcheck no debe contar supresiones juego todavía alcanzable [..]
- 289 578 trazas con ARM relajarse tablas (apilar banderas de escaneo)
- 296 311 seguimientos de pila incorrectos debido al -fomit-frame-pointer (x86)
- 304832 ppc32: construir fracaso
- 305 431 Uso de repliegue shdr find_buildid para archivos .debug separadas
- 305728 Agregar compatibilidad con instrucciones AVX2
- 305948 ppc64: generación de código para ShlD64 / ShrD64 afirma
- 306035 s390x: generación IR Fix para LAAG y amigos
- 306054 s390x: Condición de cálculo de código para convertir-a-int / lógico
- 306098 s390x: forma de código de operación alternativo para convertir a / desde fijo
- línea de caché 306.587 Fix de vector auxiliar para PPC.
- 306 783 Mips syscall no controlada: 4025/4079/4182
- 307038 DWARF2 TPI lector: no controlada 0x8 opcode DW_OP_ (DW_OP_const1u et al)
- 307 082 HG falso positivo: pthread_cond_destroy: destrucción de CV desconocido
- 307 101 segundo argumento sys_capget puede ser NULL
- 307103 sys_openat:. Si ruta es absoluta, entonces se ignora dirfd
- 307106 amd64- & gt; IR: f0 0f c0 02 (bloquear byte xadd)
- 307113 s390x: apoyo DFP
- 307141 valgrind trabajo does't en sistema mips-linux
- 307155 filter_gdb debe filtrar syscall-template.S T_PSEUDO
- 307.285 prueba x86_amd64 función para avx en banco de pruebas está mal
- 307290 memcheck necesita filtro versión memcpy
- 307 463 Por favor, añada & quot; & límite = 0 & quot; a los & quot; todos los bugs abiertos & quot; enlace
- 307465 --show-posiblemente perdido = no debería reducir el código de error de cuenta / salida
- 307557 Fugas en Mac OS X 10.7.5 bibliotecas en ImageLoader :: recursiveInit [..]
- 307729 pkgconfig apoyo valgrind.pc roto
- 307828 Memcheck falsos errores SSE optimizado wcscpy, wcscmp, wcsrchr, wcschr
- 307955 Edificio 3.7.0-r4 falla en Gentoo AMD64 cuando utilice sonido metálico
- 308089 Unhandled syscall en ppc64: prctl
- 308135 PPC32 MPC8xx tiene 16 bytes de tamaño de caché
- 308321 banco de pruebas interfiere con gdb_filter
- 308 333 307 106 ==
- 308341 vgdb debe informar de salida del proceso (o señal fatal)
- 308427 s390 informes Memcheck tsearch cjump / cmove depende UNINIT
- 308495 Quitar la acumulación de dependencia en las cabeceras de Xen instalados
- 308 573 Error interno en la instrucción de 64 bits se ejecuta en modo de 32 bits
- 308 626 308 627 ==
- 308627 pmovmskb bit de validez es imprecisa
- 308644 vgdb por tener la información para la opción de pista-fds
- 308711 dar más información sobre aspacemgr y arenas en out_of_memory
- 308717 ARM: aplicar-punto fijo VCVT.F64 [SU] 32 .
- 308718 ARM implementar familia SMLALBB de instrucciones
- 308886 Falta apoyo a PTRACE_SET / GETREGSET
- 308930 name_to_handle_at syscall (303 en amd64) no maneja
- 309229 comprobador V-bit no informa el número de pruebas genera
- 309323 impresión instuction no reconocido en MIPS
- 309425 Proporcionar una bandera --sigill-diagnóstico para suprimir ilegal [..]
- 309 427 SSE optimizado gatillo stpncpy valor no inicializado [..] errores
- 309430 Auto ppc64 hospedaje encuentra un error vassert el tipo de operando
- 309600 valgrind es un poco confusa secciones aproximadamente 0 empresas
- 309 823 Generar errores para sigue impidiendo alcanzables
- 309921 PCMPISTRI bit de validez es imprecisa
- 309.922 ninguno / tests / ppc64 / test_dfp5 falla a veces
- 310 169 La clase Iop_CmpORD de Yopukas no está soportado por el corrector vbit.
- 310424 --read-var-información no describe adecuadamente las variables estáticas
- 310.792 búsqueda vía adicional para los símbolos de depuración
- 310931 s390x: Mensaje seguridad ayudar (MSA) de extensión de instrucciones [..]
- 311100 implementación PPC DFP de los operandos enteros es inconsistente [..]
- 311318 ARM: & quot; 128 bits constante no se implementa & quot; mensaje de error
- 311407 SSSE3 bcopy (memcpy realidad convertida) causa de lectura no válido [..]
- 311 690 V se bloquea porque redirige ramas dentro de una función redirigido
- 311880 x86_64: hacer cuelga Regtest en shell_valid1
- 311 922 ADVERTENCIA: syscall no controlada: 170
- 311 933 251 569 ==
- 312 171 ppc: selección insn para DFP
- 312 571 Redondeo modo de llamada equivocada para el DFP Yopukas [..]
- 312 620 Cambiar para Iop_D32toD64 [..] para el apoyo s390 DFP rompió ppc [..]
- 312913 punteros colgantes también debe reportar el seguimiento de la pila alloc
- 312980 Edificio en Mountain Lion genera algunas advertencias del compilador
- 313 267 Adición MIPS64 puerto / Linux para Valgrind
- 313 348 251 569 ==
- 313 354 251 569 ==
- 313811 búfer en assert_fail
- 314099 Coverity señaló error en VEX guest_ppc_toIR.c insn_suffix
- 314 269 ppc: Código de muertos en la selección insn
- 314718 ARM: poner en práctica la instrucción división entera (SDIV y udiv)
- 315 345 cl-format.xml y Callgrind / dump.c no están de acuerdo sobre el uso de cfl = o TPI =
- 315441 sendmsg debe ignorar msg_flags msghdr unset
- 315534 msgrcv dentro de un hilo provoca valgrind para colgar (bloque)
- 315 545 Afirmación '(UChar *) sección & gt; tt [tteNo] .tcptr soname'
- 320.895 añadir soporte fanotify (incluye parche)
- 320998 vex amd64- & gt; instrucción pcmpestri y pcmpestrm SSE4.2 IR
- 321.065 actualizaciones Valgrind para Xen 4.3
- 321148 Unhandled instrucción: PLI (Pulgar 1, 2, 3)
- 321363 Unhandled instrucción: SSax (ARM + Pulgar)
- 321364 Unhandled instrucción: SXTAB16 (ARM + Pulgar)
- 321466 Unhandled instrucción: SHASX (ARM + Pulgar)
- 321467 Unhandled instrucción: SHSAX (ARM + Pulgar)
- 321468 Unhandled instrucción: SHSUB16 (ARM + Pulgar)
- 321619 Unhandled instrucción: SHSUB8 (ARM + Pulgar)
- 321620 Unhandled instrucción: UASX (ARM + Pulgar)
- 321621 Unhandled instrucción: USAX (ARM + Pulgar)
- 321692 Unhandled instrucción: UQADD16 (ARM + Pulgar)
- 321693 Unhandled instrucción: LDRSBT (Pulgar)
- 321694 Unhandled instrucción: UQASX (ARM + Pulgar)
- 321696 Unhandled instrucción: UQSAX (pulgar + ARM)
- 321697 Unhandled instrucción: UHASX (ARM + Pulgar)
- 321703 Unhandled instrucción: UHSAX (ARM + Pulgar)
- 321704 Unhandled instrucción: REVSH (ARM + Pulgar)
- 321730 Añadir cg_diff y hombre cg_merge páginas
- 321738 Añadir vgdb y valgrind-oyente páginas man
- 321 814 315 545 ==
- 321891 Unhandled instrucción: LDRHT (Pulgar)
- 321960 pthread_create () entonces alloca () causando errores de pila no válido de escritura
- 321969 ppc32 y ppc64 no apoyan [LF] setxattr
- 322254 Mostrar threadName junto a tres veces al día si se establece mediante la aplicación
- 322294 Añadir soporte inicial para IBM Power ISA 2,07
- 322 368 error de aserción en wqthread_hijack bajo OS X 10.8
- 322563 vex MIPS & gt; IR: 0x70 0x83 0xF0 0x3A
- 322807 VALGRIND_PRINTF_BACKTRACE escribe pila de llamadas a xml y texto a stderr
- 322851 0bXXX sintaxis literal binario no es estándar
- 323035 Unhandled instrucción: LDRSHT (Pulgar)
- 323036 Unhandled instrucción: SMMLS (ARM y pulgar)
- 323116 El memcheck / tests / ppc64 / power_ISA2_05.c no construir [..]
- 323175 Unhandled instrucción: SMLALD (ARM + Pulgar)
- 323177 Unhandled instrucción: SMLSLD (ARM + Pulgar)
- 323432 pthread_cond_destroy Calling () o pthread_mutex_destroy () [..]
- 323 437 Fase 2 soporte para IBM Power ISA 2,07
- 323713 Soporte mmxext (sse entero) subconjunto en i386 (athlon)
- 323 803 instrucciones de memoria transaccional no son compatibles con Power
- 323893 SSE3 no disponible en los procesadores de AMD en valgrind
- 323905 probable falso positivo de Valgrind / DRD en close ()
- 323912 encabezado valgrind.h no es compatible para mingw64
- 324047 Valgrind no soporta [LDR, ST] {S} [B, H] instrucciones T ARM
- 324149 Helgrind: Cuando pthread_cond_timedwait devuelve ETIMEDOUT [..]
- 324181 mmap no maneja MAP_32BIT
- 324227 memcheck fuga de falsos positivos cuando un subproceso llama salida + bloque [..]
- 324 421 Soporte para fanotify API en la arquitectura ARM
- 324514 gdbserver monitorear cmd consistencia comportamiento de salida [..]
- 324518 ppc64: Emulación de instrucciones DCBT no maneja [..]
- 324.546 ninguno / tests / ppc32 test_isa_2_07_part2 solicita -m64
- 324 582 Cuando se realiza el acceso a la memoria liberada, informar tanto la asignación de [..]
- 324594 Fix cómputo desbordamiento para Power ISA 2,06 insns:. Mulldo / mulldo
- 324765 ppc64: instrucción ilegal al ejecutar ninguno / tests / ppc64 / jm-misc
- 324816 VEX aplicación incorrecta de xscvspdp / xvcvspdp para entradas SNAN
- 324 834 instrucciones no controlada en Microsoft C de tiempo de ejecución para x86_64
- 324 894 Fase 3 soporte para IBM Power ISA 2,07
- 326091 DRD: Evite informes raza falsas de strlen (optimizados) impls
- 326113 valgrind libvex hwcaps error en AMD64
- ni-bz Algunas opciones de línea de comandos erróneos podrían ser ignorados
- parche ni-bz para permitir feria sched en android
- ni-bz error informe de instantánea vgdb solicitado antes de la ejecución
- -ni bz mismo que 303.624 (fijo en 3.8.0), pero para android x86
Llamada
Detección
Testcase superposición
Valgrind
Filtro memcheck
Propagación
Comando
Propagación
Error
Desbordamiento
Syscall
¿Cuál es nuevo en la versión 3.8.1:
- Se corrige algunos errores de aserción en 3.8.0 que ocurrir moderadamente con frecuencia en casos de uso reales, añade soporte para algunas instrucciones que faltan en el brazo, y fija una condición de interbloqueo en MacOSX.
- Si empaqueta o entrega 3.8.0 para uso de otros, es posible que desee considerar la actualización a 3.8.1 en su lugar.
¿Qué hay de nuevo en la versión 3.6.0:
- Se trata de un lanzamiento de características con muchas mejoras significativas y la colección habitual de correcciones de errores.
- La principal mejora es que Valgrind ahora trabaja en ARM / Linux y en Mac OS X 10.6 (Snow Leopard).
Comentarios que no se encuentran