유 닉 스 에서 C 프로그램 메모리 누 출 검사 도구 Valgrind 설치 및 사용
1826 단어 C 기초Linux 환경 프로 그래 밍
Valgrind 의 최초 작 가 는 Julian Seward 였 다. 그 는 2006 년 Valgrind 개발 작업 으로 제2회 Google - O 'Reilly 오픈 소스 코드 상 을 받 았 다.
Valgrind 는 GNU 공용 라이선스 조항 을 준수 하 는 자유 소프트웨어 입 니 다.
홈 페이지
http://www.valgrind.org
다운로드 및 설치
#wget http://www.valgrind.org/downloads/valgrind-3.8.1.tar.bz2#tar xvf valgrind-3.8.1.tar.bz2#cd valgrind-3.8.1#./configure --prefix=/usr/local/webserver/valgrind#make#make install
테스트 코드
#include
int* func(void)
{
int* x = malloc(10 * sizeof(int));
x[10] = 0; // 1:
}
int main(void)
{
int* x=NULL;
x=func();
//free(x);
x=NULL;
return 0; // 2:
}
컴 파일
#gcc -g -o test test.c
메모리 검사 \ # valgrind -- tool = memcheck -- leak - check = yes -- show - reachable = yes. / test
보고서:
설명 하 다.
Invalid write of size 4: 배열 이 경 계 를 넘 어 4 바이트 를 썼 음 을 나타 낸다.
40 bytes in 1 blocks: 프로그램 종료 로 메모리 유출 40 바이트
버그 복구, 메모리 유출 없 음 재 확인
문서:
Valgrind 에 포 함 된 Memcheck 도 구 는 다음 과 같은 프로그램 오 류 를 검사 할 수 있 습 니 다. 초기 화 되 지 않 은 메모리 (Use of uninitialised memory) 를 사용 하여 방출 된 메모리 (Reading / writeing memory after it has been free 'd) 를 사용 하여 malloc 가 할당 한 메모리 공간 (Reading / writeing off the end of malloc' d blocks) 을 초과 합 니 다.스 택 에 대한 불법 접근 (Reading / writing inappropriate areas on the stack) 신청 공간 이 있 는 지 여부 (Memory leaks – where pointers to malloc 'd blocks are lost forever) malloc / free / new / delete 신청 과 메모리 방출 의 일치 (Mismatched use of malloc / new / new [] vs free / delete / delete []) src 와 dst 의 중첩(memcpy () 및 관련 함수 의 src 및 dst 포인 터 를 겹 쳐 서 사용)
기타 참고 도구: likwid http://code.google.com/p/likwid/downloads/list