puddletag - Herramienta para rastrear y visualizar el comportamiento de pthread en Linux
musicbrainz picard debian (3)
Estoy ansioso por encontrar una herramienta que me permita rastrear el comportamiento de los subprocesos en un programa en el que estoy trabajando. Soy consciente de que allí donde se hacían preguntas similares, ver here y here .
Resulta que las herramientas recomendadas no son lo que necesito o parece imposible hacer que funcionen en mi máquina. Es Debian 6, de 32 bits en la arquitectura x86.
EZtrace en combinación con ViTE parece ser lo que estoy buscando. Pero lamentablemente no puedo hacerlo funcionar. (Las herramientas no se compilan en algunas versiones, otras versiones fallan, nunca las vi funcionar. Diferentes computadoras (Ubuntu 10.04 x64) muestran otros errores)
¿Existe una solución de rastreo que sea capaz de visualizar el comportamiento de un programa pthreaded en Linux, que se sepa que funciona?
La suite de herramientas de Valgrind [Linux y OS / X]
He usado Memcheck y funciona como se anuncia. Sin embargo, todavía no he usado las herramientas de visualización. No estoy seguro si la salida de Helgrind se puede adaptar para ver con kCachegrind.
La distribución de Valgrind incluye cuatro [sic] herramientas útiles de depuración y creación de perfiles:
Memcheck detecta problemas de administración de memoria y está dirigido principalmente a los programas C y C ++. Cuando un programa se ejecuta bajo la supervisión de Memcheck, se comprueban todas las lecturas y escrituras de la memoria, y se interceptan las llamadas a malloc / new / free / delete. Como resultado, Memcheck puede detectar si su programa:
Accede a la memoria que no debería ... Utiliza valores no inicializados de manera peligrosa. Fugas de memoria. Hace malas liberaciones de bloques de almacenamiento dinámico (liberaciones dobles, liberaciones no coincidentes). Pasa bloques de memoria de origen y destino superpuestos a memcpy () y funciones relacionadas. Memcheck reporta estos errores tan pronto como ocurren, dando el número de línea de origen en el que ocurrió ...
Cachegrind es un perfilador de caché. Realiza una simulación detallada de los cachés I1, D1 y L2 en su CPU y, por lo tanto, puede identificar con precisión las fuentes de fallas de caché en su código ...
Callgrind, de Josef Weidendorfer, es una extensión de Cachegrind. Proporciona toda la información que Cachegrind proporciona, además de información adicional sobre los gráficos de llamadas. Se integró en la distribución principal de Valgrind en la versión 3.2.0. KCachegrind , disponible por separado, es una herramienta de visualización sorprendente, que ofrece una mejor visión general de los datos que recopila Callgrind; También se puede utilizar para visualizar la salida de Cachegrind.
Massif es un generador de perfiles de pila. Realiza el detallado perfil de pila al tomar instantáneas regulares de la pila de un programa. Produce un gráfico que muestra el uso del montón a lo largo del tiempo, incluida la información sobre qué partes del programa son responsables de la mayoría de las asignaciones de memoria ...
Helgrind es un depurador de hilos que encuentra carreras de datos en programas multihilo. Busca ubicaciones de memoria a las que se accede mediante más de un subproceso (POSIX p-), pero para las cuales no se puede encontrar un bloqueo utilizado de forma consistente (pthread_mutex_). Dichas ubicaciones son indicativas de falta de sincronización entre los subprocesos y podrían causar problemas dependientes de la sincronización difíciles de encontrar. Es útil para cualquier programa que use pthreads. Es una herramienta un tanto experimental, por lo que sus comentarios son especialmente bienvenidos aquí.
DIVINE puede dibujar una gráfica del espacio del estado y verificar si hay aserciones violadas.