2013-03-28 2 views
0

C++의 Microsoft Visual Studio 2012 Ultimate IDE를 사용하여 정말 간단한 win32 콘솔 프로그램을 만들었습니다. 디버그/릴리스의 콘솔 프로그램

코드입니다 :

디버그 64 모드에서

, argc = 1, 릴리스의 x64 모드에서 argv[0] = the program's path

, argc = some random large number : 코드 라인을 통해

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    int i = 0; 
    i++; 
    return = 0 
} 

디버깅,이났습니다 , argv[0] = some random path or simply 0x00000001

왜인가요?

도움을 주시면 감사하겠습니다.

+1

는'cout과 << argc'을 추가 한 후 무슨 일이 일어 나는지 참조하십시오. 옵티마이 저는 해당 변수를 무시할 수 없습니다. –

답변

5

릴리스 모드의 기본 빌드 옵션은 릴리스 모드에서 현명한 디버깅을 제공하지 않습니다. 컴파일러가 릴리스 모드에서 사용하는 최적화는 컴파일 된 코드가 작성한 코드와 상당히 다르게 표시 될 수 있지만 (논리적으로는 동일 할 수 있음을 의미합니다.

이미이에 대한 좋은 답변있다, How to debug in release mode?