[C] segmentation fault 해결하기

이대현·2021년 1월 7일
2

C / CPP

목록 보기
11/28

segmentation fault 에러 잡기가 너무 어려웠다.
printf로 하나씩 찍어보면서 확인하는 것도 지치고... vscode 디버깅 모드도 잘 모르고...🥲

피씬때부터 선생님이었던 kychoi님께 SOS를 요청했는데 완전 꿀팁을 알려주셨다.

컴파일할 때 아래 옵션을 넣어주면 어디서 문제 생긴건지 알려준다!!!!!!!!!

-g -fsanitize=address

예를들면 이런 식이다.

  1. main.c 58번 째 줄에서 사용한
  2. get_next_line.c의 67번 째 줄에서 사용한
  3. ft_strjoin.c의 25번 째 줄의
  4. ft_stelen.c 에서 문제가 생겼다는 뜻이다.

gnl에서 backup[fd]ft_strjoin으로 넘길 때 아직 할당되어있지 않은 backup[fd]를 바로 ft_strlen로 읽어버리니까 세그폴트가 난 것이었다.

  • backup[fd]를 처음에 NULL로 초기화 해주던가
  • ft_strjoin 내부에서 NULL 들어왔을때도 처리할 수 있게 해주던가
    하는 방식으로 해결할 수 있었다.

이제 세그폴트... 두렵지 않을지도...🥲?!

profile
삽질의 기록들 👨‍💻

1개의 댓글

comment-user-thumbnail
2022년 5월 4일

-g -fsanitize=address 이 옵션 vscode json 파일 어디에 입력해야하는 건지 알려주실 수 있나요?

답글 달기