릴리스 바이너리에로드 될 공유 라이브러리에서 메모리 누수를 찾는 방법을 알아야합니다. 공유 라이브러리 -g 옵션을 사용하여 빌드 한 공유 라이브러리를 의미하지만 공유 라이브러리를로드하는 바이너리는 -g 옵션으로 빌드되지 않습니다.valgrind - 공유 라이브러리에서 메모리 누수 찾기
다음과 같이 누출 신고를 받았습니다.
==739== at 0x4A05809: malloc (vg_replace_malloc.c:149)
==739== by 0x84781B1: ???
==739== by 0x87507F5: ???
==739== by 0x874CF47: ???
==739== by 0x874E657: ???
==739== by 0x874F7C2: ???
==739== by 0x8779C0C: ???
공유 라이브러리에서 누출의 스택 추적을 얻는 방법을 알려주십시오.
dlclose 이후에 심볼을 언로드하는 옵션을 제공하는 패치가있었습니다. 패치가 작동하고 여러 번 사용했습니다. 그러나 패치는 이전 버전이었고 지금은 썩은 것 같습니다. https://bugs.kde.org/show_bug.cgi?id=79362 – k0n3ru
@TomH : "생략 dlclose"해결 방법은 많은 위양성을 유발할 수 있다고 지적하겠습니다. 스택에 힙에 있던 요소를 파괴하는 객체가있는 경우, dlclose가 먼저 파괴를 수행 했으므로 출력에 누출로 표시됩니다. – newhouse
그리고 valgrind가 64 비트이지만 32 번째 디버그를하면 두 번째 것도 제대로 작동하지 않습니다. – newhouse