是否有用于可视化动态调用图的工具?我看到了对 Visual Basic 6 的一个参考,但我想要一个用于 .NET 的参考。
如果我必须自己构建一个可视化器,我应该使用.NET 分析 API还是应该使用Mono.Cecil做一些事情?我开始使用 Cecil 编写 CLI 运行时,但我想如果我只是在程序集中注入调用图记录调用会更容易,尽管因为我不提前知道执行路线并且必须检测所有内容。
是否有用于可视化动态调用图的工具?我看到了对 Visual Basic 6 的一个参考,但我想要一个用于 .NET 的参考。
如果我必须自己构建一个可视化器,我应该使用.NET 分析 API还是应该使用Mono.Cecil做一些事情?我开始使用 Cecil 编写 CLI 运行时,但我想如果我只是在程序集中注入调用图记录调用会更容易,尽管因为我不提前知道执行路线并且必须检测所有内容。
也许 CodePlex 上的这个开源项目可以作为起点:
序列可视化
http://www.codeplex.com/sequenceviz
“SequenceViz 是一种通过对 .NET 程序集进行逆向工程来生成序列图的工具。虽然它在以后的版本中做得更多。”
有一个独立版本和一个作为反射器插件的实现。
分析 CLR 是 .NET Profiling API 的用途,因此它似乎非常适合您的需要。大多数分析器产品都基于它。但是你必须编写非托管代码,urk。
如果您只想记录方法的进入/退出,也可以使用 Cecil,而且非常简单。
编辑:
好吧,PostSharp可能是最好的解决方案,因为它允许您通过依赖静态编织来处理这样的需求。与使用 Cecil 直接重写 IL 相比,AOP 提供了更好的抽象级别。
您可以使用NProf,这是 Sourceforge 上的一个开源项目。它允许您使用新的可视化工具扩展默认 GUI。
“nprof 不仅被设计为一个成熟的 .NET 应用程序探查器,而且还是一个完整的 API,可用于构建其他探查器前端,以及使用新的可视化工具扩展默认 GUI。”
我喜欢CLR Profiler。我不会通过在此处复制文档来浪费空间,但听起来这正是您正在寻找的。