Как я могу увидеть визуализацию динамического графа вызовов для программы .NET? - PullRequest
5 голосов
/ 08 декабря 2008

Есть ли инструмент для визуализации динамических графов вызовов? Я видел ссылку на один для Visual Basic 6, но мне нужен один для .NET.

Если бы мне пришлось самому создавать визуализатор, стоит ли мне беспокоиться о .NET профилировании API или мне нужно что-то делать с Mono.Cecil ? Я начал написание среды выполнения CLI с Сесилом, но, полагаю, было бы проще, если бы я просто вставлял вызовы записи графа вызовов в сборки, хотя, поскольку я заранее не знаю маршрут выполнения, мне пришлось бы обрабатывать все.

Ответы [ 4 ]

3 голосов
/ 08 декабря 2008

Может быть, этот проект с открытым исходным кодом на CodePlex может помочь в качестве отправной точки:

SequenceViz

http://www.codeplex.com/sequenceviz

"SequenceViz - это инструмент для генерации диаграмм последовательности путем обратного инжиниринга сборок .NET. Хотя он работает немного больше, чем в более поздних версиях."

Существует автономная версия и реализация в качестве отражателя-плагина.

альтернативный текст http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=sequenceviz&DownloadId=44432

1 голос
/ 08 января 2009

Мне нравится CLR Profiler. Я не буду тратить пространство, воспроизводя здесь документацию, но, похоже, это именно то, что вы ищете.

1 голос
/ 08 декабря 2008

Вы можете использовать NProf , проект с открытым исходным кодом на Sourceforge. Это позволяет вам расширить графический интерфейс по умолчанию с новыми инструментами визуализации .

"nprof разработан, чтобы быть не только полноценным профилировщиком для приложений .NET, но и полным API, который можно использовать для создания других внешних интерфейсов профилировщика, а также для расширения графического интерфейса по умолчанию с новым инструменты визуализации. "

1 голос
/ 08 декабря 2008

Профилирование CLR - это цель .NET Profiling API, поэтому он идеально подходит для ваших нужд. Большая часть продуктов профилировщика основана на этом. Но вам придется писать неуправляемый код, urk.

Использование Cecil также возможно, и довольно просто, если вы просто хотите записать вход / выход методов.

EDIT:

Что ж, PostSharp , вероятно, является лучшим решением, поскольку оно позволяет выполнить такое требование, полагаясь на статическое плетение. AOP обеспечивает лучший уровень абстракции, чем прямая перезапись IL с помощью Cecil.

...