2012-05-30 2 views
2

tcmalloc과 연결된 바이너리를 실행 중이고 누수 탐지를 위해 스택 추적 을 생성하지 않습니다.tcmalloc에서 스택 추적을 생성하지 않습니다.

The output says: 
The 1 largest leaks: 
Leak of 14bytes 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()); 

어떤 아이디어로 의심되는 메모리 누수가 코드를 둘러싸는 무엇입니까?

+0

흠 ... 나는 보통 비슷한 경우에 대해 deleaker 또는 다른 디버거를 사용합니다 ... –

답변

0

일부 설정에서 스택 추적을 얻으려면 프레임 포인터가 필요할 수 있으므로 -fno-omit-frame-pointer (gcc)로 프로그램을 빌드하는 것이 좋습니다.

tcmalloc은 일반적으로 스택 추적을 얻기 위해 libunwind를 사용하지만 데드락 문제 때문에 모든 곳에서 사용할 수 없습니다.

생성 된 파일 (이 경우 /tmp/prog.15062.prog-end.heap)에 일부 주소가 포함되어 있으면 흥미로운 정보가됩니다.

관련 문제