C , C++, C#

[Visual Studio] 릴리즈 바이너리 디버깅하기

vhxpffltm 2022. 12. 7. 22:04

신기하게도.. 디버그 바이너리에서는 문제가 없는데...

 

테스트 코드의 릴리즈 바이너리에서는 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의 구분 등 이 중요함을...