> For the complete documentation index, see [llms.txt](https://hidaehyunlee.gitbook.io/fork-my-brain/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hidaehyunlee.gitbook.io/fork-my-brain/c/c-piscine/segmentation-fault.md).

# segmentation fault 해결하기

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

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

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

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

```c
-g -fsanitize=address
```

예를들면 이런 식이다. ![](https://github.com/hidaehyunlee/Fork-my-brain/tree/4f7d19f4487fe8d450e22a9b6451bbed865ce125/images/91c81bc3-c2d1-4ac5-a162-b2ad5518f6b6-KakaoTalk_Image_2021-01-08-00-00-24.png)

1. main.c 58번 째 줄에서 사용한&#x20;
2. get\_next\_line.c의 67번 째 줄에서 사용한&#x20;
3. ft\_strjoin.c의 25번 째 줄의
4. ft\_stelen.c 에서 문제가 생겼다는 뜻이다.

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

* backup\[fd]를 처음에 NULL로 초기화 해주던가
* ft\_strjoin 내부에서 NULL 들어왔을때도 처리할 수 있게 해주던가&#x20;

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

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