Mandoo’s WLAN story

2년차 시스템 개발자의 우당탕탕 개발일기 본문

작고 소소한 왕만두의 사생활/개발일기

2년차 시스템 개발자의 우당탕탕 개발일기

mandoo12 2022. 8. 17. 18:11

그동안 c/c++ MFC를 이용해 응용프로그램 개발만 건드려 봤다가, 이직하면서 임베디드/시스템 개발자로 틀어버렸다.

무선랜 프로토콜, 암호화 알고리즘, openwrt와 기본적인 리눅스 시스템 구조 등 알아야 내용들이 너무 많은데, 여지껏 윈도우 개발만 했던 나로써는 1년동안 너어무 힘들었다.

c와 c++을 동시에 하다보니 너무 벅찼고, 진짜 실력보다는 업무적인 개발능력만 늘어갔다.

이 글에는 1년 동안 해왔던 시행착오와 가장 많이 했던 실수에 대해 회고록을 써보려고 한다:)

1. Segmentation fault 에러

- null 값을 가리키는 포인터에 접근할 경우

- 할당 받은 메모리 공간을 초과한 넘은 곳을 참조한 경우

- 이미 해제되어 존재하지 않는 메모리 영역을 참조한 경우

 

C의 꽃이라고 부르는 포인터를 잘못 쓴 경우에 발생한다.

프로그램이 다운되기 때문에 포인터를 사용할때는 NULL 체크는 기본으로 해야하지만,

매번 예외처리 생각을 못하고 냅다 개발하다가 멘붕 온 적이 한두번이 아니다.

지금까지 했었던 C#이나 C++만큼 에러 원인을 친절하게 알려주지 않고, 프로세스가 바로 죽어버린다.

디버깅이라곤 무작정 printf로 찍어보거나 백그라운드로 돌리는 프로세스는 로그로 찍어보는수 밖에 없다.

한번에 척! 완성 할 순 없지만 기본적인 예외처리는 미리미리 해두는 습관을 들여야한다고 생각한다!

 

 

2. 리눅스 명령어

리눅스 환경에서 개발하고, 테스트를 해야하다보니 기본적인 리눅스 시스템 구조는 알고있어야 한다.

하지만 항상 윈도우 개발만 하다보니 리눅스를 다루는게 많이 낯설고 어려웠다ㅜㅜ