[질문] Eclipse CDT에서 콘솔 창에 출력물이 안 뜹니다.
글쓴이: bc_lee / 작성시간: 수, 2011/02/23 - 10:34오전
안녕하세요,
저는 Windows 7 64bit에서 GCC(MinGW) + Eclipse CDT로 C++ 공부하려는 대학생입니다.
굳이 Eclipse를 쓰는 이유는 메인 데스크탑에 우분투 + Eclipse로 쓰고 있어서요.
그런데 Eclipse CDT에서 프로그램을 실행하면 콘솔 창에 출력이 안 나옵니다. Debug 모드에서는 안 나오고요.
구글링을 좀 해보니 Eclipse의 버그라는 말이 많은데 수 년전부터 그랬으면 고쳐지지 않았을까 했는데... 최신버전에서도 일어나네요.
혹시 해결방법 아시는 분 있으시면 알려주세요.
Eclipse 버전은 Helios SR1 (릴리즈 된 빌드중 최신), 64bit
GCC는 4.5.2
JDK는 1.6.0.22 64bit 입니다.
Forums:
한마디로 말하자면, 이클립스가 잘못해서 생긴 버그가
한마디로 말하자면, 이클립스가 잘못해서 생긴 버그가 아니라 운영체제와의 문제로 생기는 버그입니다.
물론 윈도우 한정으로요. scanf함수가 있을 경우 그 함수 이전의 printf 문장이 안나오는 건데...
혹시 이거 말한게 아닌가요? 아니면 해결책 엄는디.
이클립스 cdt console 버그 라는 키워드로 구글 검색 해 보시면
이클립스 CDT 콘솔 이용해서 실행시
아래와같이 scanf 함수가 있다면 아무것도 출력되지 않습니다.
먼저 입력을 한 이후 화면이 출력되는 현상을 볼수 있습니다.
#include
int main()
{
int nAge;
int nBirth;
printf("Age : ");
scanf("%d", &nAge);
printf("Age = %d\n", nAge);
return 0;
}
해결방법: printf나 출력문 이후에 버퍼를 비워줌 > fflush(stdout);
예)
#include
int main()
{
int nAge;
int nBirth;
printf("Age : ");
fflush(stdout);
scanf("%d", &nAge);
printf("Age = %d\n", nAge);
return 0;
}
버그에대한 수정답변
It is not easy to "fix" and it depends on the OS.
The line buffering policy for the stdio or for C++ iostream, is base on whether
or not the output stream maps to a real console or a pty for Linux user.
On Linux, we find a way to do this by creating a pseudo pty, this will
work for debug launch and normal launch(in most of the case).
On Windows, for the GDB backend we create a command console that is
associated with the application, this will work for debug launch.
On Windows for normal launch we have no solution, so the output will not
be line buffered. So yes this is still a problem for windows.
This bug was flip to fix because it was targetting Linux(Unix-All) and
a solution was provided.
The other comments are for windows and folks should make a new PR for it.
라고 하네요.
댓글 달기