라이브러리 (openFrameworks)를 사용하여 프로젝트를 구축 중이며 릴리스 타겟 용 컴파일러에 설정된 기본 옵션에는 결코 사용한 적이없는 -O2
플래그가 포함되어 있습니다. 최근까지는 모든 것이 제대로 작동했기 때문에 아무 것도 생각하지 않았습니다. 그런 다음 개발에 사용되지 않는 컴퓨터에서 테스트를 시작했고 프로그램이 다운되었습니다 (디버그 문에 도달하지 못했습니다).-O2 플래그로 인해 각 시스템에서 다시 컴파일해야한다고 생각합니다. 왜?
대상 컴퓨터 자체에서 다시 컴파일하면 실행 파일이 올바르게 작동합니다. -O2
깃발이 원인일까요? 대상 컴퓨터에서 다시 컴파일 할 때 오류 또는 경고가 표시되지 않으므로이 문제가 왜 발생하는지 잘 모르겠습니다. 내가 -O2
플래그를 의심하는 이유는 프로젝트에서 사용되지 않는 유일한 플래그이기 때문입니다.
-O1
또는 -O3
플래그에서 발생하는지 여부는 아직 테스트하지 않았습니다.
저는 Windows 7입니다. 모든 테스트는 Windows 7 및 Windows 8 시스템에서 수행되었으며, Code :: Blocks에서 MinGW (TDM-GCC) 4.8.1을 사용하여 컴파일되었습니다.
나는 컴파일러 플래그에 문제가 있다고 생각하지 않는다. 많은 프로젝트는 기본값으로'-O2'를 사용한다. 나는 정의되지 않은 행동에 걸 겠어. 그건 당신이 준 정보가 진짜 대답이 될 길이 없다고 말했습니다. –
문제는 어디에 문제가 있을지 전혀 모르며 코드 페이지를 게시하는 것이 정확하지 않은 것입니다. 제가 할 수있는 일이 도움이 될까요? – BananasGoMoo
디버거를 통해 단계별 실행. 'main()'에서 중단 점을 설정 한 다음 중단되는 것을 찾을 때까지 앞으로 나아 갑니 다. 'main()'에 도달하기 전에 충돌이 발생하면 main() 이전에 실행되는 유일한 것들이기 때문에 static (전역) 변수 초기화에 문제가있을 수 있습니다. 또는 실제로 내가 아직도 발견하지 못하는 -O2의 문제점. –