2012-04-09 83 views
15

Estoy usando Eclipse CDT en Linux, ¿alguien puede recomendar un buen generador de perfiles en ese entorno, por favor?Linux Eclipse CDT profiler

También soy nuevo en C++ y programación multi-hilo, puede alguien que también ofrecen algunos consejos sobre cómo ejecutar perfiles para aplicaciones multi-hilo por favor, por ejemplo, lo que debe buscar cuello de botella, etc.

Gracias .

Respuesta

12

No sé si es la mejor opción, pero definitivamente es una obvia: gprof. Solo necesita configurar los parámetros de compilación correctamente (habilite gprof (-pg) para ese proyecto en las propiedades del proyecto -> compilación c/C++ -> Configuración -> Depuración). Cuando haya compilado el programa con esta opción, debe ejecutarlo (hasta que normalmente salga). Esto genera el archivo de perfil (gmon.out). Hay un complemento adicional que puedes instalar en eclipse, que visualiza el contenido de gmon.out (ve a Ayuda -> Instalar -> Herramientas de Linux -> Integración de GProf). Simplemente abra el archivo generado gmon.out como lo haría con cualquier otro archivo, una vez que tenga instalado ese complemento.

+3

http://wiki.eclipse.org/Linux_Tools_Project/GProf/User_Guide –

+1

Una cosa a tener en cuenta sobre gprof (tal vez otras herramientas también), es que si se cierra la aplicación utilizando Ctrl C (Como uno generalmente cierra un servidor que escribe) entonces el archivo gmon.out no se escribirá. – kroiz

+0

Aquí está la pregunta relacionada http://stackoverflow.com/questions/1030829/gprof-reports-no-time-accumulated. Alguien notó que si una de las librerías dependientes como stdC++ es compilada sin -pg, entonces no se podría recopilar la información de tiempo. ¿Es verdad? – Sergei

3

Según lo mencionado por dbrank0, debe establecer la opción de compilación (-pg) para ese proyecto. Vaya a las propiedades del proyecto -> compilación c/C++ -> Configuración -> compilador C++ -> Depuración y verificación generar información gpof. Cuando compile el programa (test_prof.c) obtendrá un archivo exe (en nuestro caso test_prof).

$ ls 
test_gprof test_gprof.c 

y cuando lo ejecute habrá un archivo gmon.out generado en el mismo directorio.

$ ls 
gmon.out test_gprof test_gprof.c 

La herramienta gprof se ejecuta con el nombre del ejecutable y lo de arriba generada ‘gmon.out’ como argumento. Esto produce un archivo de análisis que contiene toda la información de perfil deseada.

$ gprof test_gprof gmon.out > analysis.txt 

Se generará un archivo llamado 'analysis.txt' que contiene toda la información del perfil y se puede leer fácilmente. Para más detalles vistazo a http://www.thegeekstuff.com/2012/08/gprof-tutorial/

+0

Hola Umair, Aquí está la pregunta http://stackoverflow.com/questions/1030829/gprof-reports-no-time-accumulated relacionada. Alguien notó que si una de las librerías dependientes como stdC++ es compilada sin -pg, entonces no se podría recopilar la información de tiempo. ¿Puedes confirmar o refutar esto, por favor? – Sergei