작성
·
63
0
Release로 실행 시 자꾸 -1만 출력되고 얼마 안 가 바로 종료가 되어서 로컬 windows 디버거로 돌려보니 위 사진과 같은 오류가 뜨는 것을 확인했습니다.
영상에서는 Debug로 두고 실행한 것을 확인하고 Debug로 변경 후 실행해 보니 문제 없이 돌아가는 것을 확인 할 수 있었습니다.
왜 이런 차이가 생기는 것인가요?
답변 2
0
TestLock* testLock = new TestLock();
testLock->TestPush() 등으로 교체하면
발생하지 않는 것으로 보면, 락 코드 쪽 문제는 아니고
Release 모드의 최적화 이슈로 보입니다.
사실 저렇게 전역 변수에서 락을 사용한 경우가 없어서 저도 처음 본 케이스네요.
어차피 저렇게 사용할 일은 없으므로 일단은 넘어가주시면 되겠습니다.
질문에 추가 답변을 드리자면 Debug 에선 발생하지 않고, Release에서만 발생하는 경우는
찐으로 문제가 있는 경우가 맞습니다. 실제로 게임도 Release로 빌드를 하기도 하고요.
그럴 땐 원인을 어떻게든 찾아서 고치긴 해야 합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 니체님.
Release 모드로 빌드할 때 오류가 발생하는 문제에 대해 답변드리겠습니다.
Release 모드는 기본적으로 성능 최적화를 목적으로 여러 가지 코드를 최적화합니다. 이로 인해 디버그 모드에서는 문제가 없는 코드가 Release 모드에서는 예상치 못한 동작을 할 수 있습니다. 특히, 다중 스레드 프로그래밍에서 이러한 문제가 두드러질 수 있습니다.
아래 URL들을 통해서 유사한 질문과 그에 대한 답변들을 확인해보세요.
Release 와 Debug 모드의 차이 및 오류 수정 방법
Release 모드 빌드 시 발생하는 문제의 일반적인 해결법
질문의 핵심은 ‘Debug 모드에서는 정상 동작하는데 Release 모드에서는 비정상 종료가 발생하는 이유’인데요, 이는 주로 변수가 최적화되는 과정에서 발생하는 문제입니다. 예를 들어, 변수의 초기화 또는 메모리 접근과 관련된 문제일 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
앗 넵 알겠습니다 답변 감사합니다