[Visual Studio] 릴리즈 바이너리 디버깅하기
신기하게도.. 디버그 바이너리에서는 문제가 없는데...
테스트 코드의 릴리즈 바이너리에서는 Gtest가 실패하는게 문제였다.
그래서.. 릴리즈 바이너리도 디버깅이 되는가 해서 좀 찾아보았다.
https://learn.microsoft.com/en-us/cpp/build/how-to-debug-a-release-build?view=msvc-170
How to: Debug a Release Build
Learn more about: How to: Debug a Release Build
learn.microsoft.com
다행히 MSVC의 공식 문서에서 확인할 수 있다.
내용을 보면 누구나 쉽게 적용할 수 있다.
CMake로 제너레이터가 되어 있고 전체 프로젝트가 하도 많고 커서.. 다 하는건 불가능했고 문제가 되는 소스 파일을 가지는 라이브러리만 따로 프로젝트 속성에서 변경하였다. 이건 링크 속성의 변경한 일부 내용이다.
두번째는 변수가 최적화되어 사용할 수 없습니다. 구문이다.
위 내용대로 잘 적용했는데... 일부 변수가 최적화 되어 사용할 수 없다는 구문이다.
최적화 처리로 인해 stack의 로컬 변수가 모두 확인할 수 없는 문제이다.
바이너리가 링크하는 라이브러리의 코드만 보기 때문에 해당 라이브러리의 C++ 최적화 옵션만 아래처럼 변경하였다.
이걸로 중요한점은 그것이다..
최상단 CMakeLists.txt의 컴파일 옵션과 Linking 옵션에 뭐 다양하게 있었는데.. 왜 있었는지..
그리고 Debug와 Release를 왜 구분해서 세팅해야하는지....
MSVC와 GNUC의 구분 등 이 중요함을...