TGTGInsightаналитика telegramLIVE / telegram public index
← Программирование для гуманитариев
Программирование для гуманитариев avatar

TGINSIGHT POST

Post #267

@it_human

Программирование для гуманитариев

Просмотры3,280Количество просмотров
Опубликован20 окт.20.10.2020, 14:43
Содержимое поста

Содержимое

Дебаггинг Недавно мне писал подписчик по поводу одной учебной задачки. В ходе решения ему нужно было проверить, что строка s содержит в себе только латинские буквы (ascii). Для решения этой задачи требовался цикл примерно вот такого вида (неважно, на каком языке) for (int i = 0; i < l; i++) { // Здесь код с проверкой, что каждый символ строки s (s[i]) соответствует нужной раскладке } Проблема была в том, что код работал не так, как ожидал его автор и выдавал в некоторых случаях некорректные результаты. Знакомая ситуация? Что в таких случаях НЕ надо делать: не надо вносить в код беспорядочные изменения, надеясь, что «а может так заработает?», «а если так?», «а если эти строчки местами поменять?». Что нужно делать: разобраться, что не так. Проследить логику выполнения программы и найти ошибки или непродуманные моменты. Это и называется дебаггинг. Один из самых простых и распространённых способов дебажить - это вывести на экран по ходу выполнения программы информацию о том, что с ней происходит, функциями print или log (в зависимости от языка). Например, в нашем случае можно в цикле на каждой итерации проверять значения каждой переменной вот так: for (int i = 0; i < l; i++) { log(«loop iteration start»); log(i); log(l); log(s); log(s[i]); // и так далее … log(«end of iteration»); } После выполнения этой программы мы увидим в консоли, что происходит на каждом шаге цикла, и как меняются переменные, и найдём тот момент, когда программа совершает ошибку и делает не то, что нам нужно. Помимо способа с «принтами», есть еще удобные утилиты для дебаггинга кода. Они позволяют запустить код с возможностью остановить его на любом шаге, посмотреть, что записано в каждой переменной в настоящий момент, и какой шаг будет выполняться дальше - в общем, проследить всю логику выполнения программы. Из хардовых утилит - есть консольная gdb, используется для C, C++ и некоторых других языков. Для других языков программирования есть свои аналоги. И ещё хорошие новости для тех, кто любит удобства - в современных IDE обычно есть уже встроенные дебаггеры, с кнопочками и удобными менюшками - всё, как вы любите. Так что не игнорируйте ошибки, а учитесь их отлавливать и исправлять.