gcc로 컴파일해서 열심히 프로그램을 돌리다보면 Segmentation Fault가 나는 경우가 있다.
보통 배열에 접근할 때나 포인터를 넘길 때 잘못하면 이런 문제가 생기는데 보통 for문 등 루프에서 배열에 접근할 때의 조건을 잘 보면 해결된다. 그런데도... Segmentation Fault가 해결이 안된다면 Valgrind를 사용해보자.
우분투의 경우 apt-get install valgrind 를 이용해 설치하면 되며 이외에는 valgrind.org에서 다운로드 받아 설치하면 될 것 같다..
(우분투만 써봐서요...ㅎㅎ)
설치 후 컴파일에서 옵션을 주어야 하는데 -g를 꼭 넣어줘야 한다.
Valgrind의 옵션은 꽤 다양해서 Valgrind --help를 입력해 옵션의 설명을 보는 것도 유용하다. 그래도... 귀찮다면
valgrind --leak-check=full --log-file=memcheck.txt -v --error-limit=no ./abc.out arg1 arg2
보통 배열에 접근할 때나 포인터를 넘길 때 잘못하면 이런 문제가 생기는데 보통 for문 등 루프에서 배열에 접근할 때의 조건을 잘 보면 해결된다. 그런데도... Segmentation Fault가 해결이 안된다면 Valgrind를 사용해보자.
우분투의 경우 apt-get install valgrind 를 이용해 설치하면 되며 이외에는 valgrind.org에서 다운로드 받아 설치하면 될 것 같다..
(우분투만 써봐서요...ㅎㅎ)
설치 후 컴파일에서 옵션을 주어야 하는데 -g를 꼭 넣어줘야 한다.
Valgrind의 옵션은 꽤 다양해서 Valgrind --help를 입력해 옵션의 설명을 보는 것도 유용하다. 그래도... 귀찮다면
valgrind --leak-check=full --log-file=memcheck.txt -v --error-limit=no ./abc.out arg1 arg2
옵션은 버전마다 다를 수 있으므로 확인해서 맞는 옵션을 쓰자.
프로그램이 실행되면 로그가 memcheck.txt에 남게 되는데 이를 열어서 보면.... 꽤 많은 기록이 쏟아져 나온다.
우선 로그의 좌측 숫자는 프로그램의 PID이며 에러의 경우 == PID == 로 나타난다. -- PID --라면 이는 일반적인 정보이다.
다음의 블로그에서 정보를 얻었다.
http://adnoctum.tistory.com/555
프로그램이 실행되면 로그가 memcheck.txt에 남게 되는데 이를 열어서 보면.... 꽤 많은 기록이 쏟아져 나온다.
우선 로그의 좌측 숫자는 프로그램의 PID이며 에러의 경우 == PID == 로 나타난다. -- PID --라면 이는 일반적인 정보이다.
다음의 블로그에서 정보를 얻었다.
http://adnoctum.tistory.com/555
'Study > Computer' 카테고리의 다른 글
Linux Backup 때 챙기는 파일들 (0) | 2012.09.20 |
---|---|
Linux에서 Memory 정보 확인하기 (0) | 2012.07.31 |
MS-SQL to MySQL (0) | 2011.02.26 |
도스에서 작업한 txt파일 리눅스에서 편집하기 (2) | 2011.01.03 |
프랙탈 그림 그리기 (Z^3-1=0) (0) | 2010.04.19 |