[질문] Eclipse CDT에서 콘솔 창에 출력물이 안 뜹니다.

bc_lee의 이미지

안녕하세요,

저는 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 입니다.

고자라니의 이미지

한마디로 말하자면, 이클립스가 잘못해서 생긴 버그가 아니라 운영체제와의 문제로 생기는 버그입니다.
물론 윈도우 한정으로요. 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.

라고 하네요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.