ventajas - Código de C++ dependencia/call-graph "viewer"?
visual studio 2015 descargar (8)
¿existe tal cosa como una herramienta (gratuita) que muestre un gráfico de todas las funciones llamadas en una función determinada? Por ejemplo, si lo uso en una función compleja fun () que estoy tratando de entender, me mostraría todas las funciones llamadas fun () en orden, entonces tendría la posibilidad de ver lo mismo para la función Llamado por diversión (), y así sucesivamente. Estoy buscando esto para el código C ++. ¿Existe tal cosa incluso?
edición: estoy usando VS 2008 si eso ayuda, pero estaba pensando que tal software funcionaría en los archivos de origen de todos modos
El generador de perfiles VC ++ 2008/2010 genera, entre otros, el archivo * CallerCalleeSummary.csv, que contiene esta información. Y este es el enlace al artículo que explica cómo usarlo con un programa de ejemplo: Creación de perfiles de aplicaciones C ++ en Visual Studio
No conozco ninguna herramienta especialmente diseñada para esto. Sin embargo, hay algunas maneras de hacerlo:
- Usar un IDE (QtCreator es gratuito, Visual Studio Express también podría ser útil, Eclipse CDT)
- Utilizando (ctags) [http://ctags.sourceforge.net/] y un editor de texto capaz.
- Usando callgrind y las varias vistas que trae. Ventaja: puedes ver las funciones que realmente se llaman. Desventaja: solo se ejecuta en unixes, y hay que hacer un perfil.
- Utilizando Doxygen ... este es realmente sofisticado, ya que genera una "vista" html de su código, siempre que proporcione las opciones correctas.
Puedes usar callgrind, y es la herramienta GUI kcachegrind .
Sí, la vista Jerarquía de llamadas CDT de Eclipse proporciona exactamente esto. Además, esta vista tiene 2 opciones:
- Mostrar llamantes
- Mostrar callees
Usted pregunta por el segundo, pero prefiero el primero en el análisis de código.
Sí, tales cosas existen. Google bajo el título de análisis de código estático . Existen, por ejemplo, herramientas tales como Understand , y es extremadamente probable que su compilador también pueda hacer esto, por lo que le remito a su documentación.
g ++ y la mayoría de los compiladores pueden hacer lo que quieras. Se llama profiling . También está el oprofile . Un perfilador le da el gráfico de llamadas de una aplicación after
su ejecución. Esto es muy útil para estudiar el código, también puede recorrer la salida de [debug] mientras observa el gráfico. Por el contrario, un analizador de código le dará todas las rutas de llamadas posibles, sin embargo, no podrá ver la ruta significativa fácilmente.
Doxygen puede hacer esto. Ver la opción de configuración CALL_GRAPH
:
Si las etiquetas
CALL_GRAPH
yHAVE_DOT
están configuradas enYES
, doxygen generará un gráfico de dependencia de llamada para cada función global o método de clase. Tenga en cuenta que habilitar esta opción aumentará significativamente el tiempo de ejecución. Por lo tanto, en la mayoría de los casos, será mejor habilitar los gráficos de llamadas para funciones seleccionadas solo con el comando / callgraph.
Intel (R) Single Event API es un proyecto gratuito de código abierto que utiliza GraphVis para la visualización de gráficos de llamadas. Se requiere un poco de trabajo para realizar la instrumentación manual o automatizada por compilador, pero además de las estadísticas y los gráficos de llamadas, también obtendrá las vistas de horas extraordinarias.