Localizar mal acceso a la memoria en Solaris
-
18-09-2019 - |
Pregunta
En Linux, FreeBSD y otros sistemas Tengo valgrind para comprobar si hay errores de memoria no válida como lecturas y similares. Me encanta valgrind. Ahora tengo que probar el código en Solaris / OpenSolaris y no puedo encontrar una manera de obtener información sobre inválida lecturas / escrituras de una manera tan agradable (o mejor ;-)) como valgrind allí.
Durante la búsqueda de esto en la red me encontré referencias a libumem , pero solo me dan informes sobre las pérdidas de memoria, no hay acceso no válido. ¿Qué me falta?
Solución
El dbx incluido con los compiladores de Sun Studio incluye acceso a la memoria de comprobar el apoyo en su "tiempo de ejecución Comprobación" característica (el subcomando check
). Ver:
- Solaris Studio 12.4 Manual DBX: Capítulo 9: Uso de tiempo de ejecución de Comprobación
- Depurar aplicaciones con Sun Studio DBX, dbxtool, y el hilo Analizador
- Weblog de Leonard Li: Duración de la memoria Comprobación
El relacionadas con "error de memoria Sun Descubrimiento de herramientas" también está disponible desde http://cooltools.sunsource.net/ descubrir /
Otros consejos
watchmalloc es una biblioteca muy útil que se puede cargar dinámicamente para su programa (por lo general no hay necesidad de volver a compilar) y a continuación, establece puntos de observación en todos los lugares de memoria por lo general problemáticos, como zonas liberadas o después de un bloque de memoria asignada. Si su programa accede a una de estas áreas no válidas se pone una señal y se puede inspeccionar en el depurador.
En función de la configuración de las áreas problemáticas pueden ser observados para las escrituras solamente, o también para lee.
Desde la versión 3.11.0, Valgrind se ejecuta en Solaris. Ver Notas de la versión y Plataformas compatibles .
Más precisamente, x86 / Solaris y amd64 / Solaris es ahora compatible. El apoyo a SPARC / Solaris es todavía en obras.