Собственно есть потребность в следующем:
1. Построении статического дерева функций программы/dll/драйвера.
2. Построении дерева вывозов функций во время программы/dll/драйвера.
3. Анализе затратов времени и ресурсов на выполнение программы/dll/драйвера.
В основном интересуют подобные программы для применения к драйверам под Windows XP. Написаны они на Си.
От себя немного по теме: 1ая потребность — самая простая, думаю попробовать консольную утилиту calltree. Надеюсь скомпилить под виндой не составит проблем) Кроме того, может кто знает, умеет ли doxygen строить подобные вещи? В его настройках что-то подобное видел, но чего-либо вменяемого получить не смог =( directory.fsf.org/project/calltree/
2ая потребность — самая насущная… Если для пользовательских приложений, скомпиленных с помощью gcc решение нашлось легко и просто: etrace — ndevilla.free.fr/etrace/ (уже портировал под винду, пробовал на их тестовом примере — работает), то вот остается вопрос можно ли будет написать драйвер, который использует ту же уловку {__cyg_profile_func_enter()/__cyg_profile_func_exit()}, но при этом загружается одним из первых и пишет дерево в файл или в com-порт, чтобы через связку vbox/named pipe + windbg это можно было отловить. Я так думаю в файл не получится, т.к. трассировать хочу драйвер файловой системы… Ну да ладно, такими вопросами буду мучить народ из ReactOS))
3я потребность — вытекает из 2ой. Просто поискав по инету наткнулся на программы, которые кроме стека вызова функций еще и считают скока времени и ресурсов было затрачено. Для анализа оч. бы пригодилось, но ни с одной еще не работал, а в википедии их великое множество: en.wikipedia.org/wiki/List_of_performance_analysis_tools
Собственно вопросы:
Пользовался ли кто-нть вышеописанными/подобными программами? Можете ли что-нть посоветовать для удовлетворения этих трех потребностей?
И вообще, интересуют программы позволяющие лучше разобраться в чужом коде и том как он работает))
PS собственно все это нужно для диплома/драйвера fastfat_new из ReactOS. Как сторонник OpenSource я бы предпочел свободные/открытые проги, но не питаю неприязни к проприетарному ПО =)