Отладка утечки памяти TCMalloc

Я скомпилировал приложение с помощью tcmalloc и использовал переменную окружения HEAPPROFILE для получения файлов кучи

каждые 10 МБ или около того создается новый файл кучи, и в соответствии со страницей tcmalloc я могу использовать инструмент pprof для сравнения файлов кучи и просмотра дополнительных необработанных объектов (возможная утечка).

pprof --text  myapp --base=myapp.0001.heap myapp.0047.heap

результат:

Всего: 4600,7 МБ

4592.3  99.8%  99.8%   4592.3  99.8% 0x00000000009f1d25
7.3   0.2% 100.0%      7.3   0.2% 0x00000000009f1cfc
1.0   0.0% 100.0%      1.0   0.0% 0x00000000009f74f1
0.0   0.0% 100.0%   4600.7 100.0% 00007f07fe149b44
0.0   0.0% 100.0%   4600.7 100.0% 0x0000000000480da1
0.0   0.0% 100.0%   4600.7 100.0% 0x00000000004b5a3e

0x00000000009f1d25 — хороший адрес, но я ничего не могу поделать с этими данными.

Я пытался запустить то же самое в приложении helloworld

pprof --text  helloworld  helloworld.0001.heap
Using local file helloworld.
Using local file helloworld.0001.heap.
Total: 9.5 MB
9.5 100.0% 100.0%      9.5 100.0% BigNumber::BigNumber
0.0   0.0% 100.0%      0.0   0.0% __GI__IO_file_doallocate
0.0   0.0% 100.0%      9.5 100.0% main
0.0   0.0% 100.0%      0.0   0.0% _IO_new_file_overflow
0.0   0.0% 100.0%      0.0   0.0% _IO_new_file_xsputn
0.0   0.0% 100.0%      0.0   0.0% __GI__IO_doallocbuf
0.0   0.0% 100.0%      0.0   0.0% __GI__IO_fwrite
0.0   0.0% 100.0%      9.5 100.0% __libc_start_main
0.0   0.0% 100.0%      9.5 100.0% _start
0.0   0.0% 100.0%      0.0   0.0% std::__ostream_insert
0.0   0.0% 100.0%      0.0   0.0% std::operator<<

Здесь мы можем ясно видеть, что все функции имеют четкие имена, а утечка происходит из конструктора BigNumber.

Может кто-нибудь направить меня в правильном направлении, чтобы получить смысл адреса выше?

0

Решение

Задача ещё не решена.

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

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

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