No Console Output in Eclipse with CDT in Windows

In Windows the Console doesn’t display any output from printf. Let’s see an example.

int main(void) 
{
    int i;

    printf("Enter a number: ");
    scanf("%d", &i);
    printf("You entered %d\n", i);
    return EXIT_SUCCESS;
}

The text “Enter a number: ” is not shown in the Console windows of Eclipse with CDT. This is due to the fact all the stdout and stderr ouputs in Windows are buffered. So we can simply flush stdout and stderr everytime you use printf. But it is not practical solution. You may add these two lines of code in the first part of your main function.

  • setvbuf(stdout, NULL, _IONBF, 0);
  • setvbuf(stderr, NULL, _IONBF, 0);

These lines enforce stdout/stderr not to have buffers which means that all the output will be happening as soon as it takes place. One serious problem of this solution is that the program will be crashed if you start the debugger and try to step over any of printfs. So in the Debug mode, starting a new command prompt console is a good idea. Let’s me summary this workaround.

Use setvbuf for Run mode

Put this function in your main function in the first place.

void set_std_buffer_off()
{
    setvbuf(stdout, NULL, _IONBF, 0);
    setvbuf(stderr, NULL, _IONBF, 0);
}
int main(void)
{
    // turn off the std buffering
    set_std_buffer_off();

    // start your own code.
    ....
}

You now see outputs from printfs in your code when you run the program.

Debug mode

For the debug mode, use GDB command file.

Create a text file and named it as “gdbinit.txt” The file name is not important anyway. You may use any proper name. Open the text file and put this single line into the file and save it.

set new-console on

This line simply means that new console will be started when the debugger starts a debugging session.

Open “Preferences” (Window > Preferences). Set the text file for “GDB command file:” in C/C++ –> Debug –> GDB. Click the “Apply” button and the “OK” button.

Try to debug your program. Then you will see a command prompt when the debugger starts. All outputs and inputs will be happening in the new command prompt without having any troubles.

About these ads

About Jaerock

Assistant Professor of Computer Engineering Dept. of Electrical and Computer Engineering Kettering University

Posted on February 23, 2014, in Uncategorized. Bookmark the permalink. 1 Comment.

  1. You share interesting things here. I think that your page can go viral easily,
    but you must give it initial boost and i know how to do it, just search in google for – mundillo traffic
    increase go viral

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 147 other followers

%d bloggers like this: