Използвам Intel VTune Amplifier XE 2011, за да анализирам производителността на моята програма. Искам да мога да видя изходния код в резултатите от анализа и в документацията се казва, че трябва да предоставя информация за символа. За съжаление не се посочва как да се генерира тази символна информация, когато компилирам моята програма. Във версията на VTune за Windows всичко, което трябваше да направя, беше да осигуря файла ".pdb", който Microsoft Visual Studio ще генерира. Има ли подобен вид файл, който мога да създам с помощта на g++, за да предоставя информация за този символ?
Как да генерирам символна информация, която да използвам с Linux версията на Intel VTune Amplifier?
Отговори (3)
gcc -g <your stuff>
трябва да е всичко, което е необходимо. Използвах обаче по-стара версия.
Опциите на командния ред за по-новите неща са тук
РЕДАКТИРАНЕ: Този SO отговор вероятно е по-ценен от всичко тук.
Опитахте ли да компилирате с -g? Обикновено това е всичко, от което се нуждаете, за да генерирате символни данни за дебъгери, програмисти за профилиране и т.н.
Между другото, за профилиране на Linux, Zoom от RotateRight.com е много по-удобен за потребителя от VTune.
Най-„класическият“ начин да получите изпълним файл, който да съдържа информацията за отстраняване на грешки с GCC, е да посочите опцията на командния ред „-g“, както е споменато от другите автори. Това не води до удар в производителността, тъй като информацията за отстраняване на грешки се намира в ELF секции, които не са част от кода или сегмента с данни. Това означава, че .debug* секциите не се нанасят в паметта по време на нормалното изпълнение на програмата, това е само времето за отстраняване на грешки, когато програмата за отстраняване на грешки ги въведе.
Друго полезно съображение за всеки разработчик, който работи върху производствен софтуер, е да използва отделни файлове с информация за отстраняване на грешки. Това предполага компилиране на програмата с "-g", както е описано по-горе и след това използване на помощната програма objcopy за копиране на ELF секциите, съдържащи информация за отстраняване на грешки, в отделен файл и добавяне на връзка от оригиналния двоичен файл към отделния файл с информация за отстраняване на грешки. Това е изключително полезно за възможността да съхранявате информацията за отстраняване на грешки за битовете, които сте предоставили на клиент, така че да е възможно отстраняване на грешки след смъртта. И разбира се, за профилиране на производителността на освобождаващите битове също.