세그멘테이션 폴트 에러.....
제품완성의 마지막 단계에 나오는 버그일 확률이 높습니다. 몬지도 모르면서 이건가? 저건가? 하고 딥따 궁굼하게 생각하는 것중 하나였는데요. 아주 기본적인 거 라고 생각하시면 댑니다. 씨피유는 메모리의 코드를 읽어서 실행하고, 메모리내의 공간을 잡아서 데이터를 저장하고, 그런데 이 와중에 메모리와 씨피유간에 잘못된(몬지모르지만 ㅋㅋ) 작업이 발생하면 나오는 거더군요. 몬지는 잘 찾아봐야지요. 굉장히 어려운 에러같고, 너무 뭉뚱그려서 얘기한거 같지만, 오히려 곰곰히 생각하시면 금방 답이 나오는 경우가 이경우 입니다. 해보신분은 아마도 저와 같은 생각을 하실거 같습니다. 그게 아니라 다른거라고 생각되시면 다시 첨부터 살펴보시길...... 회로도, 피씨비,자재,조립,전원(파워),옵션, 드라이버, 로우레벨 소프트웨어, 하이레벨소프트웨어,테스트방법 ..... 첨부터 하나씩 잘 살펴보고, 의심가는 부분을 검증해나가면 버그는 잡히게 됩니다. 너무 사설을 늘어논것 같군요. ... 수고하세요.
대표적으로... 버퍼 오버 플로우나 포인터 처리가 잘못 되었을 경우에 일
대표적으로... 버퍼 오버 플로우나 포인터 처리가 잘못 되었을 경우에 일어납니다. 프로그램이 복잡하다면 무척 잡기 힘든 버그이면서도 프로그래머들이 가장 피해야 할 버그...-_- 에러라고 해야되나..?
일어날 수 있는 경우가 많으므로 그냥 윗 글만 갖고는 알 수 없습니다.
gdb를 쓰시든지 printf로 디버깅 하시는 수밖엔...-_-
노루가 사냥꾼의 손에서 벗어나는 것 같이, 새가 그물치는 자의 손에서 벗어나는 것 같이 스스로 구원하라 -잠언 6:5
현재 디렉토리에 코어 파일이 생겼다면 아래와 같이 명령을 실행해서문제
현재 디렉토리에 코어 파일이 생겼다면 아래와 같이 명령을 실행해서
문제 발생 범위를 줄여가 보세요.
$ gdb program_name core_file
gdb> back
라인 정보까지 나오지 않는다면 프로그램을 -g 옵션을 주고 다시
컴파일 하시기 바랍니다.
일단 범위가 좀혀 지면 코드 째려보기의 방법으로 버그를 찾기 바랍니다.
(물론 다른 편한 방법이 있다면 그걸 사용하세요)
screen + vim + ctags 좋아요~
대부분 메모리 할당 및 잘못된 메모리 공간 참조와 관련된 에러이므로, 우
대부분 메모리 할당 및 잘못된 메모리 공간 참조와 관련된 에러이므로, 우선적으로 malloc와 free, 포인터를 사용한 부분을 살펴보시길 권합니다.
디버깅에는 특별한 수가 없습니다. 확실히 문제가 없는 부분을 조금씩 넓혀 가면서 찾는 수밖에는...
세그멘테이션 폴트 에러..... 제품완성의 마지막 단계에 나오는 버그
세그멘테이션 폴트 에러.....
제품완성의 마지막 단계에 나오는 버그일 확률이 높습니다. 몬지도 모르면서 이건가? 저건가? 하고 딥따 궁굼하게 생각하는 것중 하나였는데요. 아주 기본적인 거 라고 생각하시면 댑니다. 씨피유는 메모리의 코드를 읽어서 실행하고, 메모리내의 공간을 잡아서 데이터를 저장하고, 그런데 이 와중에 메모리와 씨피유간에 잘못된(몬지모르지만 ㅋㅋ) 작업이 발생하면 나오는 거더군요. 몬지는 잘 찾아봐야지요. 굉장히 어려운 에러같고, 너무 뭉뚱그려서 얘기한거 같지만, 오히려 곰곰히 생각하시면 금방 답이 나오는 경우가 이경우 입니다. 해보신분은 아마도 저와 같은 생각을 하실거 같습니다. 그게 아니라 다른거라고 생각되시면 다시 첨부터 살펴보시길...... 회로도, 피씨비,자재,조립,전원(파워),옵션, 드라이버, 로우레벨 소프트웨어, 하이레벨소프트웨어,테스트방법 ..... 첨부터 하나씩 잘 살펴보고, 의심가는 부분을 검증해나가면 버그는 잡히게 됩니다. 너무 사설을 늘어논것 같군요. ... 수고하세요.
댓글 달기