의심의 여지없이 대답이 맹목적으로 명백하기 때문에 이것은 아마도 창피한 질문 일 것입니다.
몇 년 동안 Visual Studio를 사용해 왔지만 이번에 처음으로 '콘솔 응용 프로그램'을 개발했습니다.
내 응용 프로그램을 실행하면 콘솔 창이 팝업되고 프로그램 출력이 나타난 다음 응용 프로그램이 종료되면 창이 닫힙니다.
출력을 확인할 때까지 열어 두거나 창을 닫은 후 결과를 볼 수있는 방법이 있습니까?
의심의 여지없이 대답이 맹목적으로 명백하기 때문에 이것은 아마도 창피한 질문 일 것입니다.
몇 년 동안 Visual Studio를 사용해 왔지만 이번에 처음으로 '콘솔 응용 프로그램'을 개발했습니다.
내 응용 프로그램을 실행하면 콘솔 창이 팝업되고 프로그램 출력이 나타난 다음 응용 프로그램이 종료되면 창이 닫힙니다.
출력을 확인할 때까지 열어 두거나 창을 닫은 후 결과를 볼 수있는 방법이 있습니까?
답변:
디버깅하지 않고 실행하면 (Ctrl + F5) 기본적으로 return 키를 눌러 창을 닫으라는 메시지가 표시됩니다. 디버거를 사용하려면 마지막 줄에 중단 점을 두어야합니다.
ctrl+f5
일하고 있습니다. 작동하지 않고 Properties
프로젝트를 마우스 오른쪽 버튼으로 클릭 할 때도 없으며 wrench icon
회색으로 표시됩니다.
프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오
속성> 구성 속성> 링커> 시스템
선택 : 콘솔 (콘솔 / 서브 시스템) 에 SubSystem
옵션 또는 당신은 입력 할 수 있습니다 콘솔을 텍스트 필드에!
이제 시도해보십시오 ... 작동해야합니다
CTRL+F5
빈 프로젝트에 새 C ++ 파일을 추가하면 익숙한 사용자 가 실패합니다.
C / C ++의 방법은 다음과 같습니다.
#include <stdlib.h>
#ifdef _WIN32
#define WINPAUSE system("pause")
#endif
이것을 프로그램 상단에 놓고 Windows 시스템 ( #ifdef _WIN32
)에 있으면이라는 매크로를 만듭니다 WINPAUSE
. 프로그램이 일시 정지 될 때마다 WINPAUSE;
DOS 명령을 사용하여 프로그램을 일시 정지합니다. Unix / Linux와 같은 다른 시스템의 경우 프로그램 종료시 콘솔이 종료되지 않아야합니다.
pause
명령은 Windows 다릅니다.
.NET을 사용 Console.ReadLine()
하는 경우 프로그램을 종료하기 전에 두십시오 .
기다립니다 <ENTER>
.
Console.ReadKey()
키를 기다립니다.
Visual Studio 2017 (15.9.4)부터는 옵션이 있습니다.
Tools->Options->Debugging->Automatically close the console
Visual Studio 설명서 의 해당 조각 :
디버깅이 중지되면 콘솔을 자동으로 닫습니다.
디버깅 세션이 끝나면 콘솔을 닫도록 Visual Studio에 지시합니다.
(/ SUBSYSTEM : CONSOLE)이 vs2013에서 작동하지 않았습니다 (이미 있음).
"디버깅없이 실행"은 디버깅과 출력보기 사이를 전환하고 싶지 않으므로 옵션이 아닙니다.
나는 끝났다
int main() {
...
#if _DEBUG
LOG_INFO("end, press key to close");
getchar();
#endif // _DEBUG
return 0;
}
qtcreator pre 2.6에서 사용 된 솔루션. Qt가 성장하는 동안 vs는 다른 방향으로 가고 있습니다. 내가 기억하는 것처럼, vs2008에서는 그러한 트릭이 필요하지 않았습니다.
다음은 (1) 코드 변경이나 중단 점이 필요하지 않으며 (2) 프로그램 종료 후 일시 중지 되어 인쇄 된 모든 내용 을 볼 수 있는 솔루션입니다 . F5 또는 Ctrl + F5 후에 일시 중지됩니다. 주요 단점은 테스트 된 VS2013 Express에서 기호를로드하지 않으므로 디버깅이 매우 제한적이라는 것입니다.
배치 파일을 작성하십시오. 나는 runthenpause.bat
다음 내용으로 내 전화했다 .
%1 %2 %3 %4 %5 %6 %7 %8 %9
pause
첫 번째 줄은 사용자가 제공 한 명령과 최대 8 개의 인수를 실행합니다. 두 번째 줄은 ... 일시 정지합니다.
프로젝트 속성 | 구성 특성 | 디버깅.
$(TargetPath)
(또는 "명령"에있는 모든 것으로) 변경하십시오.runthenpause.bat
.이제 실행하면 runthenpause.bat
응용 프로그램이 시작되고 응용 프로그램이 종료되면 콘솔 출력을 볼 수 있도록 일시 중지됩니다.
심볼을로드하는 방법을 알아 내면 업데이트를 게시 할 것입니다. 나는 시도 /Z7
당 이 있지만 성공하지.
CNTRL + F5를 누르면 외부 명령 줄 창에서 열 수 있습니다 (Visual Studio에서는 제어 할 수 없음).
이것이 작동하지 않으면 코드 끝에 다음을 추가하십시오.
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
코드가 끝에 도달하면 키를 눌러 터미널 창을 닫을 때까지 기다립니다.
여러 곳에서이 작업을 수행하려면 위의 코드를 메서드 (예 :)에 넣고 프로그램이 가능한 끝에 도달 할 때마다 private void Pause()
호출하십시오 Pause()
.
다소 더 나은 해결책 :
atexit([] { system("PAUSE"); });
프로그램 시작시.
장점 :
cin.sync(); cin.ignore();
대신 트릭 을 사용하는 경우 + OS 독립적 system("pause");
)단점 :
extern "C" int __stdcall IsDebuggerPresent(void);
int main(int argc, char** argv) {
if (IsDebuggerPresent())
atexit([] {system("PAUSE"); });
...
}
제 경우에는 VS 2017 Community Edition에서 Empty C ++ 프로젝트를 만들 때이 문제가 발생했습니다. 구성 등록 정보에서 서브 시스템을 "콘솔 (/ SUBSYSTEM : CONSOLE)"로 설정해야합니다.
Console.ReadLine()
프로그램 끝에서 사용하십시오 . Enter키 를 누를 때까지 창이 열립니다 . 자세한 내용은 https://docs.microsoft.com/en-us/dotnet/api/system.console.readline 을 참조하십시오.