일부 힙 손상 탐지를 수행하기 위해 valgrind를 사용하고 싶습니다. 다음과 같은 손상 "단위 테스트"와 :힙 손상 검사에서 valgrind가 오류 발생시 중단됩니까?
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main()
{
char * c = (char *) malloc(10) ;
memset(c, 0xAB, 20) ;
printf("not aborted\n") ;
return 0 ;
}
나는 오류에 중단하지 않는 Valgrind의를 찾을 수 놀라게하지만, 단지 메시지 생성되었습니다
valgrind -q --leak-check=no a.out ==11097== Invalid write of size 4 ==11097== at 0x40061F: main (in /home/hotellnx94/peeterj/tmp/a.out) ==11097== Address 0x51c6048 is 8 bytes inside a block of size 10 alloc'd ==11097== at 0x4A2058F: malloc (vg_replace_malloc.c:236) ==11097== by 0x400609: main (in /home/hotellnx94/peeterj/tmp/a.out) ... not aborted
나는 Valgrind의 표시되지 않습니다를 오류가 발생하면 (예 : gnu-libc의 mcheck와 마찬가지로) 중단하기위한 옵션이지만 스레드 안전하지 않기 때문에 mcheck를 사용할 수 없습니다. 아무도 그게 가능하다면 알 수 있습니까 (데몬으로 실행되기 때문에 우리의 코드 dup2의 stdout은/dev/null입니다. 그래서 보고서가 유용하지 않고 행동의 범인을 잡을 것입니다).