2011-08-30 2 views
1

valgrind를 사용하여 메모리 누수를 검사 할 때 매우 이상한 문제가 발생합니다. 32 비트 리눅스에서 는 누출 스택 정보를 정기적으로 같은 매우 명확하다 : valgrind, AMD x64, 유용한 스택 정보 없음

 

    ==10650== by 0x8130FD3: SFNTSetContactServer 
    ==10650== by 0x81106CA: CLibLicense::GetOneLicense(std::string&, void*&) 
    ==10650== by 0x81108C2: CLibLicense::StartingGet(void*&) 
    ==10650== by 0x810F01A: CLibLicense::GetLicense() 
    ==10650== by 0x810DEBB: CLicenseManager::DoGetLicense(void*, unsigned int) 

그러나 64 리눅스에

, 나는 단지 를 얻을 수 있습니다 ??? 이 같은 정보를 정기적으로 :

 

    ==31031== 8 bytes in 1 blocks are definitely lost in loss record 196 of 2,210 
    ==31031== at 0x4A0646F: malloc (vg_replace_malloc.c:236) 
    ==31031== by 0x46AF78: ??? (in /opt/usr/local/sbin/Server) 
    ==31031== by 0x46B016: ??? (in /opt/usr/local/sbin/Server) 
    ==31031== by 0x421F99: ??? (in /opt/usr/local/sbin/Server) 
    ==31031== by 0x42C240: ??? (in /opt/usr/local/sbin/Server) 
    ==31031== by 0x42D731: ??? (in /opt/usr/local/sbin/Server) 
    ==31031== by 0x42FC65: ??? (in /opt/usr/local/sbin/Server) 
    ==31031== by 0x465C01: ??? (in /opt/usr/local/sbin/Server) 
    ==31031== by 0x463DB6: ??? (in /opt/usr/local/sbin/Server) 
    ==31031== by 0x3116A1D993: (below main) (in /lib64/libc-2.5.so) 

Valgrind의 자주 묻는 질문으로/우 dlclose를 dlopen을 사용하지 않는 프로그램은 말했다.

갱신 한 추가 파일 통계 정보를 정기적으로

 
    file Server 
    Server: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped 

의견은 환영합니다!

+0

심볼이 제거되지 않았는지 확인하기 위해'/ opt/usr/local/sbin/Server' 파일을 확인하십시오. – mark4o

+0

파일이 제거되지 않았습니다. 파일 서버 서버 : GNU/Linux 2.6.9 용 ELF 64 비트 LSB 실행 파일, AMD x86-64, 버전 1 (SYSV), 동적 링크 (공유 라이브러리 사용), GNU/Linux 2.6.9 용, 벗겨 내기 없음 – ric

+0

valgrind (3.6.1)의 현재 버전을 사용하고 있습니까? – mark4o

답변

1

기호가 프로그램에서 제거 된 것처럼 보입니다.

+0

'file'명령에 표시된대로 파일이 스트립되지 않습니다. GNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-23.el5)는 "/opt/usr/local/sbin/Server...(디버깅 기호 없음) ... 완료되었습니다"라는 기호를 읽는 중 정보를 표시합니다. while 그것을 디버깅하십시오. 하지만 gdb7.1 (혼자 설치)은 그 정보를 보여주지 않습니다 (/opt/usr/local/sbin/Server..done에서 기호를 읽음). – ric