tcmalloc не генерирует трассировки стека

Я запускаю двоичный файл, связанный с tcmalloc, и он не генерирует трассировку стека для обнаруженных утечек.

The output says:
The 1 largest leaks:
Leak of 1401231 bytes in 82093 objects allocated from:


If the preceding stack traces are not enough to find the leaks, try running THIS shell command:

pprof ../../prog "/tmp/prog.15062.prog-end.heap" --inuse_objects --lines --heapcheck  --edgefraction=1e-10 --nodefraction=1e-10 --gv

Когда я запускаю pprof, я получаю сообщение, что нет узлов для печати.

Я прилагаю код, который имеет подозрение на утечку памяти

HeapLeakChecker checker("prog");
....
assert(checker.NoLeaks());

Есть идеи, как отладить это?

1 ответ

Я бы предложил попробовать собрать программу с помощью -fno-omit-frame-pointer (gcc), так как указатели фреймов могут понадобиться для получения трассировки стека в некоторых установках.

tcmalloc обычно использует libunwind для получения трассировки стека, но из-за проблем взаимоблокировки это не везде доступно.

Интересная информация будет, если сгенерированный файл (в данном случае /tmp/prog.15062.prog-end.heap) содержит несколько адресов.

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