2008-12-08 13 views
5

¿Existe alguna herramienta para visualizar gráficos dinámicos de llamadas? Vi una referencia a uno para Visual Basic 6 pero me gustaría uno para .NET.¿Cómo puedo ver una visualización de un gráfico dinámico de llamadas para un programa .NET?

Si tuviera que construir un visualizador mismo venga a molestarme con el .NET perfiles API o debería hacer algo con Mono.Cecil? Comencé a escribir un tiempo de ejecución de CLI con Cecil, pero creo que sería más fácil si solo insertara llamadas de grabación de llamadas en los ensamblajes, aunque no conozco la ruta de ejecución con anticipación y tendría que instrumentar todo .

Respuesta

1

perfiles CLR es el propósito de la API .NET de perfiles, por lo que parece ser perfecto para su necesidad. La mayoría de los productos de Profiler se basan en eso. Pero tendrás que escribir un código no administrado, urk.

También es posible el uso de Cecil, y bastante sencillo si solo quiere registrar la entrada/salida de métodos.

EDIT:

Bueno, PostSharp es probablemente la mejor solución, ya que le permite manejar tal requisito, apoyándose en el tejido estático. AOP proporciona un mejor nivel de abstracción que reescribir directamente IL con Cecil.

+0

Actualicé el enlace ya que el anterior estaba muerto. El PostSharp en la nueva ubicación parece mucho más centrado en la construcción de código que en el análisis del código existente, pero debo decir que solo eché un vistazo al sitio. –

3

Tal vez este proyecto de código abierto en CodePlex podría ayudar como punto de partida:

SequenceViz

http://www.codeplex.com/sequenceviz

"SequenceViz es una herramienta para generar diagramas de secuencia por ingeniería inversa ensamblados .NET. Aunque hace un poco más que eso en las versiones posteriores ".

Hay una versión independiente y una implementación como reflector-plugin.

alt text http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=sequenceviz&DownloadId=44432

+0

Creo que la marxidad está interesada en el gráfico de llamadas * dynamic *, lo que implica que la ejecución debe ser perfilada. SequenceViz, como Reflector, realiza un análisis estático. –

+0

Conozco SequenceViz pero la parte más difícil sería obtener las llamadas reales que se realizaron durante el tiempo de ejecución. –

+0

Lo entiendo, pero pensé que podría ver el código y tomarlo como base (para la parte de visualización) y "agregar" el material de creación de perfiles – splattne

1

Usted podría usar NProf, un proyecto de código abierto en Sourceforge. Le permite a extender la GUI predeterminada con las nuevas herramientas de visualización.

"nprof está diseñado no solo como un generador de perfiles completamente desarrollado para aplicaciones .NET, sino también como una API completa que se puede usar para construir otros frontales de profiler, así como extender la GUI predeterminada con nueva visualización herramientas."

1

Me encanta el CLR Profiler. No perderé espacio reproduciendo la documentación aquí, pero parece que es exactamente lo que está buscando.

+0

¿El CLR Profiler incluye argumentos de funciones que se pasan y dentro de una secuencia de llamadas a funciones? –

+0

Captura la secuencia de llamadas a funciones, que puede presentar de una manera visual muy útil, pero no captura los argumentos de la función. –

Cuestiones relacionadas