Как использовать инструменты производительности Google

Я только начал использовать инструменты производительности Google (пакеты google-perftoolsи libgoogle-perftools4в Ubuntu), клянусь, что я гуглил около день, и я не нашел ответа!! Проблема в том, что я не получаю результат для ВСЕХ своих функций с профилированием ЦП. Вот мой код:

#include "gperftools/profiler.h"
#include <iostream>
#include <math.h>
using namespace std;
void bar()
{
        int a,b,c,d,j,k;
        a=0;
        int z=0;
        b = 1000;
        while(z < b)
        {
                while (a < b)
                {
                        d = sin(a);
                        c = cos(a);
                        j = tan(a);
                        k = tan(a);
                        k = d * c + j *k;
                        a++;
                }
                a = 0;
                z++;
        }
}
void foo()
{
        cout << "hey " << endl;
}

int main()
{
        ProfilerStart("/home/mohammad/gperf/dump.txt");

        int a = 1000;
        while(a--){foo();}
        bar();
        ProfilerFlush();
        ProfilerStop();
}

Скомпилировано как g++ test.cc -lprofiler -o a.out

Вот как я запускаю код:

CPUPROFILE=dump.txt ./a.out

Я также пробовал это:

CPUPROFILE_FREQUENCY=10000 LD_PRELOAD=/usr/local/lib/libprofiler.so.0.3.0 CPUPROFILE=dump.txt ./a.out

И это вот что я получаю от google-pprof --text a.out dump.txt:

Using local file ./a.out.
Using local file ./dump.txt.
Total: 22 samples
8  36.4%  36.4%        8  36.4% 00d8cb04
6  27.3%  63.6%        6  27.3% bar
3  13.6%  77.3%        3  13.6% __cos (inline)
2   9.1%  86.4%        2   9.1% 00d8cab4
1   4.5%  90.9%        1   4.5% 00d8cab6
1   4.5%  95.5%        1   4.5% 00d8cb06
1   4.5% 100.0%        1   4.5% __write_nocancel
0   0.0% 100.0%        3  13.6% __cos

Но нет никакой информации о функции foo!

информация о моей системе: убунту 12.04 g++ 4.6.3

Вот и все!

9
задан osgx 1 June 2014 в 06:42
поделиться