Обложка канала

Evgeny Ignatenko

Блог программиста-стажёра. Интересный опыт и истории из жизни разработчика, на начальном этапе карьеры.

Evgeny Ignatenko

3 года назад
Открыть в
Важно о дебагинге Когда в С или С++ что-то отлаживаешь старыми дедовскими принтэфами, нужно не забывать про буферизацию вывода. Но если говорить проще, не забывать надо просто ставить "\n" в конце принтэфа. Стандарнтный поток вывода на экран (он же stdout) по дефолту буферизируется построчно, т.е. непосредственный вывод на экран происходит в момент, когда printf встречает символ переноса строки. Так же его можно вручную зафлашить в любой момент при помощи fflush(stdout). Не во время каждого краша стандартный поток вывода будет зафлашен, а это значит, что например вот в такой ситуации:
printf("Here284");
code_that_crashes();
printf("Here285");
Мы можем ничего и не увидеть на экране, потому что в конце первого принта нет переноса строки, и сделаем ложный вывод, что исполнение сюда не дошло. А gdb для слабых