Предложения по инструментам для отслеживания или профилирования выполнения консольного приложения C ++ и определения трассировок - PullRequest
1 голос
/ 09 октября 2011

Я хочу выполнить трассировку выполнений Nmap с двумя различными наборами аргументов команды и отразить результаты, чтобы я мог понять, почему различные пути проходят через код.

В моем Win32 XP SP3 box две команды nmap -F -v -d -n <target_host> и nmap -F -v -v -d -n <target_host> должны проходить через код практически один и тот же путь (исключая обработку дополнительных -v arg), но они этого не делают.Я обнаружил, что была некоторая проблема с вызовом getAdapterAddresses, возвращающим ERROR_INVALID_PARAMETER, который привел к выходу nmap с сообщением об ошибке, которое отличалось немного другими аргументами.Я представил исправление, которое, похоже, решает проблему getAdapterAddresses, но теперь я хочу выяснить, почему приложение закрывалось в разных местах (см. Это сообщение списка рассылки nmap-dev и егодля получения дополнительной информации).

Проект настроен для Visual Studio Express 2010 VC ++, и я ищу способ отследить выполнение в вышеупомянутом окне Windows, а затем отразить результаты.

На какие инструменты мне следует охотиться?

Ответы [ 2 ]

0 голосов
/ 13 октября 2011

Visual Studio 2010 Premium и Ultimate имеют отличный инструмент для профилирования, из которого можно экспортировать различные элементы сгенерированных отчетов (csv или xml).

Я экспортировал дерево вызовов в csv и добавил их Beyond Compare , и это мне очень помогло.

0 голосов
/ 09 октября 2011

Если никто не придумает что-то лучше, вы можете использовать LukeStackwalker для этого, он генерирует визуальные графики вызовов из кода, который он профилирует, так что вы можете легко сравнить их визуально (вместе с количеством вызовов и временем, потраченным на функциипо количеству образцов, которые он берет).

...