문제

제목이 말하는 것. MSVC ++ 2008 Express를 사용하고 있으며 릴리스 모드에서 컴파일 된 경우 클래스 생성자가 실행되지 않습니다. 디버그 모드에서 작동합니다.

나는 다음과 같은 일을하고 있습니다.

ClassTest test;
test.DoIt();

중단 점 DoIt(); 트리거이지만 브레이크 포인트가 켜집니다 ClassTest::ClassTest(); 하지 마라.

도움이 되었습니까?

해결책

단지 생각 - 릴리스 모드에서 컴파일러 최적화가 될 수 있습니다. 생성자가 아무것도하지 않으면 발생할 수 있습니다 (예 : NO-OP). 생성자에 몇 가지 간단한 진술을 추가 해보세요.

  1. 로컬 변수를 선언합니다
  2. 변수를 초기화합니다
  3. 어떤 식 으로든 사용하십시오 (예 : 인쇄)

그런 다음 위의 (3)에 중단 점을 추가하고 해당 중단 점이 누락되었는지 확인하십시오.

최적화로 인해 브레이크 포인트가 릴리스 모드에서 발생하는 방식으로 모든 종류의 이상한 디버깅 문제를 볼 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top