cs24-23fa printf debugging

Introduction to Computing Systems (Fall 2023)

Print/printf debugging is an often-used tool, but in order to use it in CS 24 you may need to alter your practices slightly.

TL;DR

// replace this:
printf("format string: %s %d\n", "string", 5); // my tests broke, and nothing happened!
// with this:
fprintf(stderr, "format string: %s %d\n", "string", 5); // shows up in terminal, bug solved

Why?

In CS 24, tests are often run by compiling your code as part of a larger test program, which then produces output to be judged for correctness. This output is written using printf (or similar) to an output stream called stdout. Normally, stdout would show up in your terminal. However, when tests are run, stdout is “captured” to be compared against the expected output for a correct program, so printf doesn’t appear in the terminal. We can use fprintf(stderr, ...) to print to stderr rather than stdout. stderr is not captured when tests run, so the debug line will print to your terminal!