VSPerf VS2010 и другие инструменты профилирования не получают pdb

Попытка выполнить профилирование с помощью VSPerfCmd (профилировщик VS2010), а также с помощью Intel VTune Amplifier XE 2013: некоторые результаты доступны для VsPerfCmd в файле.vsp. Однако, profier не берет pdb. для некоторых частей приложения код недоступен.

Это уже случилось с вами, и знаете ли вы, должны ли быть включены некоторые опции компилятора, чтобы получить полный профиль?

в каком каталоге профилировщик найдет информацию.pdb?

Спасибо

1 ответ

Решение

Профилировщики и отладчики в Windows по умолчанию ищут файлы PDB по пути, записанному в исполняемом файле. Поэтому первое, что нужно сделать, это открыть исполняемый файл в каком-нибудь шестнадцатеричном редакторе и найти строку ".pdb" и проверить, существует ли упомянутый файл на диске. Если это не так, убедитесь, что вы указали параметр /Zi или /ZI для компилятора и /debug для компоновщика.

Если для НЕКОТОРЫХ частей приложения отсутствуют символические имена, проверьте, являются ли эти части отдельными динамическими или статическими библиотеками и генерируете ли вы отладочную информацию для них. В случае статических библиотек легко получить отладочную информацию, потерянную по пути компоновки, поскольку по умолчанию флаг /Zi встраивает отладочную информацию в файл vc*.pdb (например, vc90.pdb для VS 2008), и этот файл обычно не экспортируется. в SDK путем сборки систем. Для статических библиотек я лично считаю наиболее полезным использовать параметр /Z7 для отладочной информации, поскольку он встраивает его в сами объектные файлы, а затем в файл *.lib, а затем распространяется в конечную PDB *.exe / *.dll. файл.

Другие вопросы по тегам