herramienta sencilla para callgraph en C ++
-
19-09-2019 - |
Pregunta
es que hay herramienta sencilla, que se puede utilizar para determinar desde donde se invoca una función, que otra función de la función llama ...?
Editar . Estoy utilizando Mac OS X (10.6) y sólo quieren hacer análisis estático
Gracias!
Solución
¿Qué hay de cscope ? Salida tercera y elementos de viñeta 4ª en la página:
- funciones llamadas por una función
- las funciones de llamada de una función
Ha sido un tiempo desde que utiliza cscope en C ++, me parece recordar que sea sólido como una roca en código C, pero no tan fuerte con C ++.
Otros consejos
generar GTAGS es una herramienta que puede utilizar para hacer el etiquetado, pero para el rastreo de llamadas también.
http://www.gnu.org/software/global/
Esto es compatible con C, C ++, Yacc, Java y PHP 4. Pero no puede manejar las plantillas de C ++ u otras materias complejas correctamente.
El uso de este analizador de marcado, he hecho un script para obtener un árbol de llamadas de
la selección de usuario a través de la finalización de bash como el siguiente,
que está mostrando un Calltree en el código perfilador Google:
% global-calltree -x prof_handler Add Evict ProfileData Stop DisableHandler RAW_CHECK WRITE_TO_STDERR
prof_handler:414 => Add:441 |profiler.cc |instance_.collector_.Add(depth, stack);
Add:241 => Evict:290 |profiledata.cc |Evict(*e);
Evict:61 => ProfileData:75 |profiledata.cc |ProfileData::ProfileData()
ProfileData:124 => Stop:125 |profiledata.cc |Stop();
Stop:261 => DisableHandler:273 |profiler.cc |DisableHandler();
DisableHandler:400 => RAW_CHECK:405 |profiler.cc |RAW_CHECK(sigaction(SIGPROF, &sa, NULL) == 0, "sigaction failed");
RAW_CHECK:83 => WRITE_TO_STDERR:86 |base/logging.h |WRITE_TO_STDERR("Check failed: " #condition ": " message "\n", \
WRITE_TO_STDERR:59 => DECLARE_int32:65 |base/logging.h |DECLARE_int32(verbose);
No se sabe acerca de las herramientas simples, pero de forma gratuita, hay codeviz (se puede leer los vertederos primas en lugar de generar gráficos, si lo prefiere así). Advertencia: todas las herramientas de análisis estático tiene algunos problemas con las llamadas virtuales, y lo que es peor con las plantillas.
Debido a que utiliza Mac OS, sonido metálico es un nuevo compilador con función de análisis estático.
Un ejemplo en youtube: encontrar errores con sonido metálico