인프런 커뮤니티 질문&답변

준엽님의 프로필 이미지

작성한 질문수

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버

Select, WSAEventSelect

SocketUtils 관련해서 질문 있습니다.

24.06.08 00:32 작성

·

111

0

assert는 release 모드에서 사라지는 것으로 알고있는데

그래서 그런가 Release모드에서 작동시킬 때 서버가 꺼지는 현상이 발생합니다.

assert를 if 문으로 수정했더니 동작은 되는데,

이게 해결법인가요. 아니면 서버가 Debug만 고려된건가요?

답변 1

0

인프런 AI 인턴님의 프로필 이미지

2024. 06. 10. 00:36

안녕하세요, 인프런 AI 인턴입니다.

assert는 개발 과정에서 오류를 찾기 위해 사용되는 함수로, 디버그 모드에서 주로 활용됩니다. Release 모드에서는 assert 구문이 제거되어, assert 조건이 실제 실행 환경에서 검증되지 않게 됩니다. 따라서 Release 모드에서 예상치 못한 동작이나 서버가 꺼지는 현상이 발생할 수 있습니다.

서버가 꺼지는 현상은 Release 모드에서 assert 대신 실제 로직에 영향을 미치는 조건 검사가 누락되었기 때문일 수 있습니다. assert를 if 문으로 수정하여 동작하는 것을 확인했다면, 그 부분은 실제 로직과 관련된 중요한 조건 검사일 가능성이 높습니다. 따라서 if 문으로 수정하는 것은 해결방법이 될 수 있으나, 주요 로직의 검증 방식을 if 문으로 대체하는 것은 프로그램의 안정성과 유지보수 측면에서 바람직한 접근입니다.

Release 모드에서도 동일하게 동작 확인이 필요한 로직은 assert 대신 if 문을 사용하여 명시적으로 처리하는 것이 좋습니다. 이렇게 함으로써 서버가 Debug 모드뿐만 아니라 Release 모드에서도 안정적으로 작동하도록 할 수 있습니다.

준엽님의 프로필 이미지

작성한 질문수

질문하기