Отладочный код
Код отладки — это компьютерный код , добавляемый в компьютерную программу для проверки ошибок или для определения причины ошибки. Это может быть так же просто, как команда echo, для вывода значения переменной в определенных точках программы. Современные интегрированные среды разработки иногда делают это ненужным, позволяя размещать точки остановки в определенных местах программы и предоставляя возможность просматривать значения переменных через IDE, а не через выходные данные программы.
Использование отладочного кода
[ редактировать ]Основная функция кода отладки — помощь в отладке кода. Это можно сделать несколькими способами, например, с помощью операторов печати, команд утверждения и модульного тестирования.
Использование в кодировании
[ редактировать ]В код можно добавлять небольшие операторы, чтобы обнаружить наличие и расположение ошибок в программе. Его также можно использовать для предоставления тестовых входных данных для моделирования возможных вариантов использования, которые может потребоваться программе. Его также можно использовать в качестве заполнителя для кода, который все еще находится в разработке.
Использование в видеоиграх
[ редактировать ]Многие моды для видеоигр, чит-коды , такие как чит-код уровня , непобедимость и т. д. изначально были представлены как код отладки, чтобы позволить программистам и/или тестировщикам пропускать препятствия, которые мешали бы им быстро перейти к частям игры, которые необходимо было пройти тестирование; и в этих случаях чит-режимы часто называют режимом отладки .
Рекомендуется удалять отладочный код из рабочих версий приложений, поскольку это может замедлить их работу. [1] Однако некоторые игры оставляют эти команды и читы доступными для игроков, чтобы улучшить свой игровой опыт. Например, версия The Elder Scrolls V: Skyrim для ПК предоставляет игроку доступ к командной консоли, что дает ему возможность изменять определенные аспекты своей игры во время ее запуска. Эти команды включают в себя предоставление игроку непобедимости, телепортации и неограниченного количества золота. [2]
Примеры отладочного кода
[ редактировать ]Отладка печати
[ редактировать ]Отладка печати использует операторы печати для поиска и изоляции ошибок в программе. Его можно использовать для отслеживания потока значений данных фрагмента кода. Этот тип отладочного кода имеет некоторые явные недостатки. Это временное явление и обычно удаляется после устранения ошибки. Использование большого количества операторов печати может повлиять на фактический вывод программы и замедлить время выполнения, в зависимости от того, как часто вызываются операторы печати. В некоторых случаях операторы печати не помогают найти проблему, например, стандартный вывод C++ имеет буферизованный вывод, а иногда содержимое буфера теряется, что приводит к неправильной отладочной информации. [3]
пример С++
[ редактировать ]void TestFunction(int timesToRun) {
cout << "the algorithm should run " << timesToRun << " times" << std::endl;
for (int i = 0; i <= timesToRun; i++) {
// run algorithm
algorithm();
// debug print statement
cout << "algorithm run " << i++ << " times." << std::endl;
}
}
В приведенном выше коде есть ошибка. При вводе 5 программа должна вывести на консоль следующее.
the algorithm should run 5 times algorithm run 1 times. algorithm run 2 times. algorithm run 3 times. algorithm run 4 times. algorithm run 5 times.
Фактический результат следующий, что неверно.
the algorithm should run 5 times algorithm run 1 times. algorithm run 2 times. algorithm run 3 times. algorithm run 4 times. algorithm run 5 times. algorithm run 6 times.
Наша функция выполняет алгоритм еще раз, и при ближайшем рассмотрении становится ясно, что наш цикл закодирован неправильно.
Утверждающие утверждения
[ редактировать ]Обычно лучшее время для исправления ошибки — до запуска программы. Это можно сделать, вставив утверждения в код. В C это можно сделать с помощью команды Assert(). Команда утверждения может проверить, выполняет ли программа правильные условия на этом этапе программы. [4]
Пример С
[ редактировать ]int i, a[10];
for (i = 0; i < 10; ++i)
{
a[i] = 10-i;
}
for (i = 0; i < 10; ++i)
{
a[a[i]] = a[i];
}
Приведенный выше код приведет к ошибке выхода за пределы, что может привести к неожиданным результатам. Код можно написать более безопасным способом, используя утверждения, как показано ниже.
#include <assert.h>
int i, a[10];
for (i = 0; i < 10; ++i)
{
assert(0 <= i && i < 10);
a[i] = 10-i;
}
for (i = 0; i < 10; ++i)
{
assert(0 <= i && i < 10);
assert(0 <= a[i] && a[i] < 10);
a[a[i]] = a[i];
}
Юнит
[ редактировать ]JUnit — это простая среда, используемая для написания повторяемых тестов, доступных для Java, и позволяющая программистам создавать свои собственные модульные тесты. Модульный тест — это код, который пишется для выполнения определенной функции в тестируемом коде и обычно нацелен на небольшую единицу кода, например один метод или класс. Используя комбинацию утверждений и других тестовых операторов, программисты могут создавать наборы тестовых примеров, чтобы определить, правильно ли выполняется метод или функция. [5]
Ссылки
[ редактировать ]- ^ «Архивная копия» . Архивировано из оригинала 02 апреля 2010 г. Проверено 26 марта 2010 г.
{{cite web}}
: CS1 maint: архивная копия в заголовке ( ссылка ) - ^ Геймер, ПК (10 ноября 2021 г.). «Консольные команды Skyrim: станьте гигантом, призраком или живым богом» . ПК-геймер .
- ^ «Техники отладки» . oopweb.com . Архивировано из оригинала 17 августа 2002 г.
- ^ «В-Визитка» .
- ^ "Дом" . junit.org .