Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I see a visualization of a dynamic call graph for a .NET program?

Is there a tool out there for visualizing dynamic call graphs? I saw a reference to one for Visual Basic 6 but I'd like one for .NET.

If I had to build a visualizer myself should I bother with the .NET profiling API or should I do something with Mono.Cecil? I started writing a CLI runtime with Cecil, but I guess it'd be easier if I just injected call-graph recording calls in the assemblies, although since I don't know the execution route ahead of time and would have to instrument everything.

like image 837
Mark Cidade Avatar asked Dec 08 '08 07:12

Mark Cidade


3 Answers

You coud use NProf, an open source project on Sourceforge. It allows you to extend the default GUI with new visualization tools.

"nprof is designed to be not only a fully-fledged profiler for .NET applications, but also a complete API that can be used to build other profiler front-ends, as well as extend the default GUI with new visualization tools."

like image 192
splattne Avatar answered Nov 19 '22 23:11

splattne


Profiling CLR is the purpose of the .NET Profiling API, so it seems to be perfect for your need. Most part of profiler products are based on top of it. But you'll have to write unmanaged code, urk.

Using Cecil is possible too, and pretty straightforward if you just want to record enter/exit of methods.

EDIT:

Well, PostSharp is probably the best solution, as it allows you to handle such a requirement by relying on static weaving. AOP provides a better level of abstraction than directly rewrite IL with Cecil.

like image 43
Romain Verdier Avatar answered Nov 20 '22 00:11

Romain Verdier


I love the CLR Profiler. I won't waste space by reproducing the documentation here, but it sounds like it is exactly what you are looking for.

The CLR Profiler is now available on Microsoft's Archive GitHub

like image 1
Justin R. Avatar answered Nov 20 '22 00:11

Justin R.