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