MacOS Time Profiler профилирует код C ++, но не может найти имя моей функции

Я написал простой тестовый код на C ++ в качестве моей первой попытки с Time Profiler на моем Mac:

#include <iostream>     // std::cout

int frank() { return 0; }

int main () {
int a = frank();
std::cout << a << std::endl;
return 0;
}

Затем я скомпилировал это:

g++ test.cpp -o test0

И я использую Time Profile для профилирования моего исполняемого файла test0:

введите описание изображения здесь

Я думал, что смогу найти свою функцию frank() в Call Tree, но я не сделал.

Другой вопрос, как передать аргументы в исполняемый файл в Time Profiler.

2

Решение

Instruments — это профилировщик выборки, для которого частота выборки слишком мала, чтобы обнаружить ваш вызов frank (). Либо выполните некоторые дорогостоящие вычисления внутри функции, либо просто вызовите ее достаточное количество раз.

Настройте ваш код следующим образом (C ++ 11), где внутри цикла вызывается чуть более сложная функция:

#include <iostream>     // std::cout

long frank(const unsigned int n) { return n*n; }

int main () {
const auto nr_iterations = 1000000u;
long a;
for (auto n = 0u; n < nr_iterations; ++n)
{
a = frank(n);
}
std::cout << a << std::endl;
return 0;
}

Результаты в следующем инструменте на моей машине:

введите описание изображения здесь

Чтобы передать аргументы через инструменты, нажмите на имя цели прямо рядом с кнопкой записи. В появившемся контекстном меню нажмите «Изменить цель», где «цель» — это имя вашего исполняемого файла. Например:

введите описание изображения здесь

Появится диалоговое окно, где вы можете ввести аргументы.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]