Я пытаюсь понять профилирование кучи и потоки STD, но я получаю ошибку во время выполнения, которую я не могу понять. Мой код:
#include <memory>
#include <gperftools/heap-profiler.h>
#include <thread>
using namespace std;
void fcn1() // no leaks
{
HeapProfilerStart("temp1");
for(auto i=0; i<10000; i++)
{
unique_ptr<long long> t(new long long);
*t = 10;
}
HeapProfilerDump("partial1");
HeapProfilerStop();
}
int fcn2() // leaks
{
HeapProfilerStart("temp2");
for(auto i=0; i<10000; i++)
{
long* t = new long;
*t = 10;
}
HeapProfilerDump("partial2");
HeapProfilerStop();
}
int main(void)
{
thread t1(fcn1);
thread t2(fcn2);
t1.join();
t2.join();
return 0;
}
У меня есть 2 проблемы, с которыми у меня проблемы.
Выход:
Starting tracking the heap
Dumping heap profile to temp1.0001.heap (partial2)
HeapProfilerDump
звонки, нет файла вывода, т.е. ничего в дампе. Разве он не должен выгружать файл профиля, когда он останавливается, или это что-то, что должно быть сделано вручную?Задача ещё не решена.
Других решений пока нет …