2014-03-26 1 views
3

macos x 10.8에서 valgrind를 실행 중입니다.Valgrind의 혼란스러운 출력은 간접적으로 손실 된 메모리 누수를 보여 주지만 확실하게 손실되거나 손실되지는 않습니다.

가 valgrinds 자주 묻는 질문, http://valgrind.org/docs/manual/faq.html#faq.deflost에 따르면, "간접적 손실"
"LEAK SUMMARY: 
==11312== definitely lost: 0 bytes in 0 blocks 
==11312== indirectly lost: 48 bytes in 2 blocks 
==11312==  possibly lost: 0 bytes in 0 blocks 
==11312== still reachable: 45,857 bytes in 270 blocks 
==11312==   suppressed: 16,805 bytes in 87 blocks" 

프로그램이 포인터 기반 구조에서 메모리가 누수 의미 : Valgrind의 시동

Valgrind의이 누출 요약을주고있다
"==11312== WARNING: Support on MacOS 10.8 is experimental and mostly broken. 
==11312== WARNING: Expect incorrect results, assertions and crashes. 
==11312== WARNING: In particular, Memcheck on 32-bit programs will fail to 
==11312== WARNING: detect any errors associated with heap-allocated data." 

에 말했다. 예를 들어 이진 트리의 루트 노드가 "확실하게 손실"되면 모든 자식이 "간접적으로 손실"됩니다. "확실히 손실 된"누설을 수정하면 "간접적으로 손실 된"누출이 사라집니다.

확실하게 누수가 유실되거나 누출이 누출되지 않아 문제를 해결할 수 없습니다. 나는 무엇을 고쳐야 할까? 10.8에서 valgrind의 실험적 특성으로 인해이 보고서가 버그가 될 수 있습니까?

저는 컴파일러가 64 비트 컴파일러이므로 64 비트 프로그램으로 컴파일하고 있다고 생각합니다.

+0

나는 이것이 어떻게 작동하는지 모르겠어요,하지만 : 그것은 그 억제 누출에서 참조 뭔가 될 수 있을까? –

+0

그럴 가능성은 확실하지 않습니다. 나는 valgrind에 대해 충분히 알지 못하고 Mac에서 어떻게 작동하는지에 대해 잘 모릅니다. 나는 리눅스에서 소프트웨어를 테스트하려고 노력하고 있는데, 지금은 presius의 주석을 테스트하지만 소프트웨어의 동작은 macos x와는 완전히 다르다. 분명히 프로그램을 다시 설치해야합니다. 희소식은 리눅스의 valgrind에 따르면 단지 8 개의 오류가 누출되지 않는다는 것입니다. –

+0

오류는 linux에서 컴파일 된 코드가 함수를 건너 뛰는 것을 보여줍니다. 따라서 코드가 f1-> f2-> f3이어야합니다. f2가 완전히 건너 뜁니다. 나는 디버깅을 좋아해야한다. –

답변

1

나는 내 자신의 질문에 답하는 것이 이상하다고 느낍니다.

예 mac에서 valgrind의 보고서가 잘못되었습니다. 리눅스의 valgrind에 따르면 모든 힙 블록이 해제되었으므로 누출은 없습니다.

저는 valgrind가 주로 Mac에서 개발 중이기 때문에 mac과 관련된 문제를 해결하기를 바랍니다.

+1

헤드 업 : 그들은 :-) – Alex

0

Valgrind는 updated입니다. (당신이 자작 사용하는 경우) 사용

brew unlink valgrind 
brew install valgrind 

을 그리고, 보라 보라 :

==23998== LEAK SUMMARY: 
==23998== definitely lost: 0 bytes in 0 blocks 
==23998== indirectly lost: 0 bytes in 0 blocks 
==23998==  possibly lost: 0 bytes in 0 blocks 
==23998== still reachable: 76,800 bytes in 2 blocks 
==23998==   suppressed: 58,420 bytes in 359 blocks 
+0

Mac OS X 10.8.x에서 'Valgrind 3.11.0'과 동일한 _ 결과 (간접적으로 손실되지 않음)가 표시됩니다. – summea

+0

놀라운 소식입니다. 불행히도 저는 Mac에서 개발을 떠나기 시작했습니다. –