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. файл.