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!

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top