Профилировщик Very Sleepy путает простые переменные с функциями, среди прочего

Я искал профилировщик C для Windows, который позволит мне проверять время, потраченное на уровне строк исходного кода, а не только на уровне функций. Это делается для того, чтобы найти в программе точки доступа, которые можно оптимизировать.

Для этой цели отлично смотрится Very Sleepy. Однако в представлении "Исходный код" не кажется, что количество времени, потраченного на одну строку кода, фактически составляет 100% эксклюзивного времени для функции.

Например, Very Sleepy говорит, что мы потратили 18,50 с эксклюзивного времени на функцию. Но сложение всех временных интервалов, указанных в представлении исходного кода для этой функции, дает только около 10 секунд.

Вот как я компилирую программу:

gcc -IC:/msys64_new/mingw64/include *.c -o plane.exe -g -gdwarf-2 -fno-omit-frame-pointer -O2 -Wall -Wno-unused -LC:/msys64_new/mingw64/lib -lShlwapi

Затем я открываю Very Sleepy через графический интерфейс и пробую выполняемый процесс ровно 100 секунд.

Я использую Very Sleepy CS 0.90. Я запускаю Windows 7 и использую подсистему Mingw-w64 MSYS2.

РЕДАКТИРОВАТЬ:

Я также заметил две странные вещи. Прежде всего, Very Sleepy отображает некоторые функции без их имени, но распознает их как часть профилированного модуля.

Во-вторых, Very Sleepy думает, что некоторые переменные на самом деле являются функциями. Например:

extension_module_file_suffixэто не функция, это переменная. Что происходит?

0 ответов

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