Я использую Intel VTune Amplifier XE 2011 для анализа производительности моей программы. Я хочу иметь возможность просматривать исходный код в результатах анализа, а в документации сказано, что мне нужно предоставить информацию о символах. К сожалению, в нем не указано, как генерировать эту информацию о символах при компиляции моей программы. В версии VTune для Windows все, что мне нужно было сделать, это предоставить файл «.pdb», который сгенерирует Microsoft Visual Studio. Есть ли аналогичный файл, который я могу создать с помощью g++ для предоставления информации об этом символе?
Как создать информацию о символах для использования с Linux-версией Intel VTune Amplifier?
Ответы (3)
gcc -g <your stuff>
должно быть все, что необходимо. Однако я использовал более старую версию.
Параметры командной строки для более новых вещей: здесь
EDIT: этот ответ SO, вероятно, ценнее всего здесь.
Вы пробовали компилировать с -g ? Обычно это все, что вам нужно для генерации символьных данных для отладчиков, профилировщиков и т. д.
Между прочим, для профилирования в Linux Zoom от RotateRight.com намного удобнее, чем VTune.
Самый «классический» способ заставить исполняемый файл содержать отладочную информацию с помощью GCC — указать параметр командной строки «-g», как упоминалось другими авторами. Это не влияет на производительность, поскольку отладочная информация находится в разделах ELF, которые не являются частью кода или сегмента данных. То есть секции .debug* не отображаются в памяти во время обычного выполнения программы, это только время отладки, когда отладчик получает их.
Еще одним полезным соображением для любого разработчика, работающего над производственным программным обеспечением, является использование отдельных файлов отладочной информации. а>. Это предполагает компиляцию программы с "-g", как описано выше, а затем использование утилиты objcopy для копирования разделов ELF, содержащих отладочную информацию, в отдельный файл и добавления ссылки из исходного двоичного файла в отдельный файл отладочной информации. Это чрезвычайно полезно для возможности хранить отладочную информацию для битов, которые вы предоставили клиенту, чтобы была возможна отладка post-mortem. И, конечно же, для профилирования производительности на релизных битах.