2010-05-27 2 views
1

Visual Studio 2008 Pro를 C++로 프로그래밍하고 있습니다. 디버깅 모드에서 실행 버튼을 누르면 모든 컴파일러 최적화가 기본적으로 프로그램에 적용됩니까?디버깅 중 컴파일러 optmizations

답변

1

디버거는 기본적으로 디버그 빌드를 실행하고 있으며 최적화는 실행되지 않습니다.

최적화가 활성화 된 경우 "단계"와 "다음"이 때때로 나타나 프로그램 흐름을 뛰어 넘을 수 있습니다. 이것은 컴파일러가 명령어를 다시 주문하고 디버거가 최선을 다하기 때문입니다.

+0

감사합니다. 두 번째로, 디버깅 실행 중에 최적화를 활성화 할 수 있습니까? 그렇다면 어떻게? – Faken

+0

일부 최적화는 작동하지만 일부는 디버깅 기능을 완전히 파괴합니다. VS에서 디버깅 할 때 활성화 할 수 있는지 여부는 확실하지 않지만 아마도 가능할 수 있습니다. – dicroce

+0

일부 속도 테스트에 최적화를 사용하고자합니다 (따라서 브레이크 포인트가 없을 것입니다). 나는 그저 편의를 위해서 버튼을 눌러 시간을 낼 수 있다고 생각한다. – Faken

0

나는 그것이 당신이 최적화로 분류 할 것이라고 생각하지만, 대부분은 그렇지 않습니다. 예를 들어, 최신 버전의 VS는 디버그 빌드의 경우와 같이 최적화를 사용하지 않더라도 (/ O0) 최소한 (경우에 따라) 익명 반환 값 최적화를 적용합니다.

최적화 된 코드를 디버그하려면 일반적으로 릴리스 빌드로 전환 한 다음 디버그 정보를 생성하도록 지정하는 것이 가장 쉽습니다. 이론적으로는 디버그 빌드에서 최적화를 켤 수 있지만 더 많은 스위치를 변경해야합니다.

관련 문제