segmentation fault 해결하기

컴파일할 때 아래 옵션을 넣어주면 어디서 문제 생긴건지 알려준다. -g -fsanitize=address

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 들어왔을때도 처리할 수 있게 해주던가

    하는 방식으로 해결할 수 있었다.

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

Last updated