Tarkvara kvaliteed ja standardid Качество и стандарты программного обеспечения.

Презентация:



Advertisements
Похожие презентации
Технология подготовки и решения задач с помощью компьютера Этапы решения задач с помощью компьютера.
Advertisements

Tarkvara kvaliteed ja standardid Качество и стандарты программного обеспечения.
Отладка программы. Классификация ошибок 1.синтаксические; 2. ошибки времени выполнения; 3.алгоритмические. Синтаксические ошибки, обнаруживает компилятор,
Сложение и вычитание дробей. Дроби это обычные числа, их тоже можно складывать и вычитать. Но из-за того, что в них присутствует знаменатель, здесь требуются.
Массивы 9 класс. Основные теоретические сведения Примеры решения задач.
Троицкий Д.И. Лингвистическое и программное обеспечение САПР 1 Классификация грамматик и языков Лекция 9 Кафедра «Автоматизированные станочные системы»
Сортировка методом пузырька, выбором (Pascal) Кокарева Светлана Ивановна.
Ключевая тема этого задания ЕГЭ – использование вложенных условных операторов, причем в тексте задания фрагмент программы обычно записан без отступов «лесенкой»
Решение заданий части С Подготовка к ЕГЭ по информатике.
BACK-IN-TIME Debugger (отладчик с возможностью обратного выполнения программ) Введение. Как известно, значительная часть усилий по разработке программного.
Теперь, когда вы постигли азы программирования, будем учиться писать программы, которые позволяют вести диалог между компьютером и человеком (пользователем).
Что такое научное исследование?. Что такое исследование? Исследование – это научное познание предметов и явлений окружающего мира. Наука – это особая.
ЛАБОРАТОРНАЯ РАБОТА 1 ПРОЕКТИРОВАНИЕ И РЕАЛИЗАЦИЯ ТАБЛИЦ, ИСПОЛЬЗУЕМЫХ В ТРАНСЛЯТОРЕ Рейн Т. С.
Системы программирования Системы программирования обеспечивают создания новых программ для компьютера. Современные системы программирования обычно представляют.
Циклы в C++. Иногда необходимо повторять одно и то же действие несколько раз подряд. Для этого используют циклы. В этом уроке мы научимся программировать.
Лекция 1. Этапы разработки программы.. Человек вводит в компьютер исходные данные (например, с клавиатуры).
Методика решения и оценивания задач «С1», «С2» Единого Государственного Экзамена.
Лекция 7. Структура языка С/С++. Операторы ветвления: условный оператор if. Полное ветвление. Неполное ветвление. Оператор множественного выбора switch.
Поскольку ваша задача - написать сочинение- рассуждение, то необходимо соблюдать требования к построению текста именно указанного типа речи. Напомню,
Основные виды ресурсов и возможности их разделения.
Транксрипт:

Tarkvara kvaliteed ja standardid Качество и стандарты программного обеспечения

Отладка программ

Что такое отладка? Отладка – это процесс обнаружения причин возникновения ошибки и ее последующего исправления (в отличие от тестирования, являющегося процессом обнаружения самого факта существования ошибки) Отладка – это процесс обнаружения причин возникновения ошибки и ее последующего исправления (в отличие от тестирования, являющегося процессом обнаружения самого факта существования ошибки) Отладка включает в себя элементы тестирования и разработки Отладка включает в себя элементы тестирования и разработки На некоторых проектах отладка может занимать до 50% всего времени разработки На некоторых проектах отладка может занимать до 50% всего времени разработки Для многих программистов отладка – это самая трудная часть программирования Для многих программистов отладка – это самая трудная часть программирования При соответствующем подходе количество ошибок, требующих отладки, должно сократиться, и отладка должна стать самой легкой частью; при таком подходе все ошибки сводятся к небольшим недосмотрам или опечаткам При соответствующем подходе количество ошибок, требующих отладки, должно сократиться, и отладка должна стать самой легкой частью; при таком подходе все ошибки сводятся к небольшим недосмотрам или опечаткам

Роль отладки в качестве ПО Как и тестирование, отладка не является способом улучшения качества ПО. Отладка – это всего лишь способ исправления дефектов в программе Как и тестирование, отладка не является способом улучшения качества ПО. Отладка – это всего лишь способ исправления дефектов в программе Качество программ должно обеспечиваться аккуратным анализом требований или прототипированием, грамотным проектированием и использованием лучших практик кодирования Качество программ должно обеспечиваться аккуратным анализом требований или прототипированием, грамотным проектированием и использованием лучших практик кодирования Отладка – это последняя надежда программиста Отладка – это последняя надежда программиста

Вариации в качестве отладки Исследования работы опытных программистов показали, что отличие лучших и худших результатов при отладке составляет ~20:1. Кроме того, некоторые программисты находят больше ошибок и исправляют их более аккуратно Исследования работы опытных программистов показали, что отличие лучших и худших результатов при отладке составляет ~20:1. Кроме того, некоторые программисты находят больше ошибок и исправляют их более аккуратно Пример: исследование работы опытных программистов (как минимум 4 года опыта работы) при отладке программы с 12 ошибками : Пример: исследование работы опытных программистов (как минимум 4 года опыта работы) при отладке программы с 12 ошибками : 3 самых быстрых програм- миста 3 самых медленных программи ста Среднее время отладки (мин) Среднее кол- во не найденных ошибок Среднее кол- во ошибок, допу-щенных при исправлении других ошибок

Выводы о различиях в качестве отладки Три лучших программиста смогли найти ошибки примерно за треть времени по сравнению с худшими Три лучших программиста смогли найти ошибки примерно за треть времени по сравнению с худшими Кроме того, они допустили всего 2/5 ошибок по сравнению с худшими Кроме того, они допустили всего 2/5 ошибок по сравнению с худшими Самый лучший программист нашел все ошибки и не допустил ни одной ошибки при исправлении Самый лучший программист нашел все ошибки и не допустил ни одной ошибки при исправлении Худший не нашел 4 из 12 ошибок и сделал 11 ошибок при исправлении тех 8, что он нашел Худший не нашел 4 из 12 ошибок и сделал 11 ошибок при исправлении тех 8, что он нашел Схожие результаты получались и в других исследованиях (Gilb, 1977; Curtis, 1981) Схожие результаты получались и в других исследованиях (Gilb, 1977; Curtis, 1981) Эти результаты подтверждают общий принцип качества: «улучшение качества снижает стоимость разработки». Не нужно выбирать между качеством, стоимостью и временем – они все могут оптимизированы одновременно Эти результаты подтверждают общий принцип качества: «улучшение качества снижает стоимость разработки». Не нужно выбирать между качеством, стоимостью и временем – они все могут оптимизированы одновременно

Ошибки как возможности Что означает наличие ошибки в программе? Видимо, то, что мы не полностью понимаем программу. Это неприятная мысль, но если мы программируем методом проб и ошибок, то ошибки неизбежны Что означает наличие ошибки в программе? Видимо, то, что мы не полностью понимаем программу. Это неприятная мысль, но если мы программируем методом проб и ошибок, то ошибки неизбежны По большому счету надо улучшать свои навыки программирования, а не навыки отладки По большому счету надо улучшать свои навыки программирования, а не навыки отладки Но даже лучшие программисты допускают ошибки Но даже лучшие программисты допускают ошибки «На ошибках учатся». Что может узнать программист при изучении своих ошибок в программах? «На ошибках учатся». Что может узнать программист при изучении своих ошибок в программах? Понять программу, над которой работает Понять программу, над которой работает Осознать свои типичные виды ошибок Осознать свои типичные виды ошибок Оценить удачность своего подхода к решению проблем Оценить удачность своего подхода к решению проблем Оценить удачность своего подхода к исправлению ошибок Оценить удачность своего подхода к исправлению ошибок

«Вредные советы» по отладке «Проще всего найти ошибку методом угадывания» «Проще всего найти ошибку методом угадывания» Разбросайте случайным образом множество отладочных печатей. Смотрите только на результат работы. Исправляйте программу где попало – вдруг повезет и она заработает? Не сохраняйте исходную версию программы. Разбросайте случайным образом множество отладочных печатей. Смотрите только на результат работы. Исправляйте программу где попало – вдруг повезет и она заработает? Не сохраняйте исходную версию программы. «Не надо тратить времени на понимание проблемы» «Не надо тратить времени на понимание проблемы» Ошибка-то, скорее всего, тривиальная! Ошибка-то, скорее всего, тривиальная! «Исправляйте ошибку самым очевидным способом» «Исправляйте ошибку самым очевидным способом» Не нужно тратить времени на сложные исправления, затрагивающие всю программу. Не нужно тратить времени на сложные исправления, затрагивающие всю программу.

Отладка и суеверия Не доводилось ли вам говорить следующие фразы? Не доводилось ли вам говорить следующие фразы? Компьютер глючит Компьютер глючит Это ошибка в компиляторе Это ошибка в компиляторе Кривые входные данные Кривые входные данные Редактор неправильно сохраняет программы и потому компилируется неправильная версия Редактор неправильно сохраняет программы и потому компилируется неправильная версия Кто его знает, когда происходит эта ошибка. Может быть, это зависит от фазы луны? Кто его знает, когда происходит эта ошибка. Может быть, это зависит от фазы луны? Чаще всего, ошибки в программах – ваши собственные; нечего сваливать свои ошибки на других Чаще всего, ошибки в программах – ваши собственные; нечего сваливать свои ошибки на других Даже если это не ваша ошибка, полезно предполагать обратное. Ошибки и так трудно находить, а если вы еще и не будете их искать... Даже если это не ваша ошибка, полезно предполагать обратное. Ошибки и так трудно находить, а если вы еще и не будете их искать...

Нахождение ошибок Отладка состоит из нахождения ошибок и их исправления. Первая часть обычно занимает до 90% времени и усилий. Отладка состоит из нахождения ошибок и их исправления. Первая часть обычно занимает до 90% времени и усилий. Наиболее эффективный метод отладки – "научный". Обобщенный научный подход может быть сформулирован так: Наиболее эффективный метод отладки – "научный". Обобщенный научный подход может быть сформулирован так: Сбор данных через повторяемые эксперименты Сбор данных через повторяемые эксперименты Создание гипотезы, отражающей максимум доступных данных Создание гипотезы, отражающей максимум доступных данных Разработка эксперимента для проверки гипотезы Разработка эксперимента для проверки гипотезы Подтверждение или опровержение гипотезы Подтверждение или опровержение гипотезы При необходимости - итерация предыдущих шагов При необходимости - итерация предыдущих шагов Этот подход находит следующее отражение в отладке: Этот подход находит следующее отражение в отладке: Стабилизация ошибки (1-ый шаг общего метода) Стабилизация ошибки (1-ый шаг общего метода) Обнаружение точного места ошибки (2-4 шаги общего метода) Обнаружение точного места ошибки (2-4 шаги общего метода) Исправление ошибки Исправление ошибки Тестирование исправления Тестирование исправления Поиск похожих ошибок Поиск похожих ошибок

Сквозной пример Мы будем рассматривать методику отладки на следующем примере. Предположим, что у нас есть программа, работающая с базой данных сотрудников. Эта программа должна печатать список сотрудников и их налоговые отчисления в алфавитном порядке. Ниже приведен результат работы: Мы будем рассматривать методику отладки на следующем примере. Предположим, что у нас есть программа, работающая с базой данных сотрудников. Эта программа должна печатать список сотрудников и их налоговые отчисления в алфавитном порядке. Ниже приведен результат работы: Formatting, Fred Freeform$5,877 Goto, Gary$1,666 Modula, Mildred$10,788 Many-Loop, Mavis$8,889 Statement, Sue Switch$4,000 Whileloop, Wendy$7,860 Проблема заключается в том, что Many-Loop, Mavis и Modula,Mildred напечатаны в неправильном порядке Проблема заключается в том, что Many-Loop, Mavis и Modula,Mildred напечатаны в неправильном порядке

Стабилизация ошибки Если проблема возникает нестабильно, то ее практически невозможно диагностировать. Если проблема возникает нестабильно, то ее практически невозможно диагностировать. Нестабильные ошибки обычно связаны с проблемами инициализации или висячими указателями Нестабильные ошибки обычно связаны с проблемами инициализации или висячими указателями При стабилизации ошибки требуется также свести тест к минимально возможному (иногда это задача группы тестирования, но чаще всего это задача программиста) При стабилизации ошибки требуется также свести тест к минимально возможному (иногда это задача группы тестирования, но чаще всего это задача программиста) Сведение теста к минимальному – это тоже задача, требующая научного подхода (хоть и в миниатюре) Сведение теста к минимальному – это тоже задача, требующая научного подхода (хоть и в миниатюре)

Пример стабилизации В нашем примере мы обнаруживаем, что после второго запуска программы все в порядке: В нашем примере мы обнаруживаем, что после второго запуска программы все в порядке: Formatting, Fred Freeform$5,877 Goto, Gary$1,666 Many-Loop, Mavis$8,889 Modula, Mildred$10,788 Statement, Sue Switch$4,000 Whileloop, Wendy$7,860 Однако при вводе новой записи, Fruit-Loop, Frita, проблема сортировки возникает снова Однако при вводе новой записи, Fruit-Loop, Frita, проблема сортировки возникает снова В обоих случаях мы вводили одну запись, а не группу записей В обоих случаях мы вводили одну запись, а не группу записей Отсюда гипотеза: проблема заключена в процедуре ввода новой записи (сортировка группы записей работает правильно) Отсюда гипотеза: проблема заключена в процедуре ввода новой записи (сортировка группы записей работает правильно) Повторный запуск подтверждает нашу гипотезу Повторный запуск подтверждает нашу гипотезу

Обнаружение точного места возникновения ошибки После сведения теста к минимальному изменение любого аспекта этого теста изменяет и внешнее проявление ошибки. Естественно, мы будем использовать это для диагностики ошибки После сведения теста к минимальному изменение любого аспекта этого теста изменяет и внешнее проявление ошибки. Естественно, мы будем использовать это для диагностики ошибки Например, в нашем примере, мы можем подозревать наличие ошибки смещения на единицу (ошибка, которая возникает при вводе одной, но не двух записей). Тогда мы можем попробовать граничные случаи (+1, 0, -1) Например, в нашем примере, мы можем подозревать наличие ошибки смещения на единицу (ошибка, которая возникает при вводе одной, но не двух записей). Тогда мы можем попробовать граничные случаи (+1, 0, -1) Однако при просмотре программы мы не можем найти ни одной такой очевидной ошибки Однако при просмотре программы мы не можем найти ни одной такой очевидной ошибки Поэтому мы должны вернуться к этапу варьирования теста. Мы добавляем сотрудника Hardcase, Henry... и он появляется на правильном месте! Таким образом, наша первая гипотеза провалилась – это или более сложная проблема, или что-то совершенно иное Поэтому мы должны вернуться к этапу варьирования теста. Мы добавляем сотрудника Hardcase, Henry... и он появляется на правильном месте! Таким образом, наша первая гипотеза провалилась – это или более сложная проблема, или что-то совершенно иное

Новые гипотезы При изучении нашего теста, мы замечаем, что Fruit-Loop, Frita и Many-Loop, Mary – это единственные фамилии, содержащие дефисы. Оба имени появлялись на неправильном месте при вводе. Может быть, в первом случае проблема была не в Modula, Mildred, а в Many-Loop, Frita? При изучении нашего теста, мы замечаем, что Fruit-Loop, Frita и Many-Loop, Mary – это единственные фамилии, содержащие дефисы. Оба имени появлялись на неправильном месте при вводе. Может быть, в первом случае проблема была не в Modula, Mildred, а в Many-Loop, Frita? Новая гипотеза: проблема связана с именами, содержащими дефис, а не с вводом одного имени Новая гипотеза: проблема связана с именами, содержащими дефис, а не с вводом одного имени Однако это не согласовывается с правильностью повторной сортировки Однако это не согласовывается с правильностью повторной сортировки

Новые гипотезы Мы смотрим в код и обнаруживаем, что программа использует две различных процедуры сортировки: при вводе сотрудника и при сохранении данных. Более того, первая процедура и не должна полностью сортировать записи – она подготавливает данные для ускорения процедуры сохранения программы. При этом всяческие особенности (типа дефисов) не поддерживаются Мы смотрим в код и обнаруживаем, что программа использует две различных процедуры сортировки: при вводе сотрудника и при сохранении данных. Более того, первая процедура и не должна полностью сортировать записи – она подготавливает данные для ускорения процедуры сохранения программы. При этом всяческие особенности (типа дефисов) не поддерживаются Итак, проблема заключается в том, что данные печатаются до сохранения в файле, в не полностью отсортированном виде Итак, проблема заключается в том, что данные печатаются до сохранения в файле, в не полностью отсортированном виде Новая гипотеза: имена с символами пунктуации неправильно сортируются вплоть до сохранения в файле Новая гипотеза: имена с символами пунктуации неправильно сортируются вплоть до сохранения в файле

Методы поиска ошибок После стабилизации ошибки и минимизации теста необходимо перейти к нахождению причины ошибки После стабилизации ошибки и минимизации теста необходимо перейти к нахождению причины ошибки В зависимости от качества кода, это может быть тривиальным или сложным (если при поиске причины ошибки у вас возникают трудности, то, скорее всего, вся программа написана плоховато) В зависимости от качества кода, это может быть тривиальным или сложным (если при поиске причины ошибки у вас возникают трудности, то, скорее всего, вся программа написана плоховато) Рекомендации по поиску ошибок: Рекомендации по поиску ошибок: Используйте все доступные данные при выдвижении гипотез Используйте все доступные данные при выдвижении гипотез Минимизируйте тесты, показывающие ошибки Минимизируйте тесты, показывающие ошибки Воспроизведите ошибку различными способами Воспроизведите ошибку различными способами Соберите больше данных для генерации новых гипотез Соберите больше данных для генерации новых гипотез Используйте результаты негативных тестов Используйте результаты негативных тестов Проведите мозговой штурм в поисках новых гипотез (не хватайтесь за первую гипотезу; ищите другие причины; думайте!) Проведите мозговой штурм в поисках новых гипотез (не хватайтесь за первую гипотезу; ищите другие причины; думайте!)

Методы поиска ошибок (2) Рекомендации по поиску ошибок: Рекомендации по поиску ошибок: Сужайте подозрительные фрагменты кода (попробуйте убрать фрагмент кода и проверьте наличие ошибки; метод "разделяй и властвуй"; ставьте точки останова в отладчике) Сужайте подозрительные фрагменты кода (попробуйте убрать фрагмент кода и проверьте наличие ошибки; метод "разделяй и властвуй"; ставьте точки останова в отладчике) Относитесь внимательнее к тем процедурам, в которых уже встречались ошибки Относитесь внимательнее к тем процедурам, в которых уже встречались ошибки Проверяйте недавние исправления Проверяйте недавние исправления Расширяйте подозрительные фрагменты кода Расширяйте подозрительные фрагменты кода Проводите интеграцию постепенно Проводите интеграцию постепенно Поставьте временное ограничение на "quick&dirty debugging" Поставьте временное ограничение на "quick&dirty debugging" Ищите типичные ошибки (см. inspection checklists) Ищите типичные ошибки (см. inspection checklists) "Исповедальная отладка" (расскажите проблему кому-то еще) "Исповедальная отладка" (расскажите проблему кому-то еще) Отдохните от проблемы Отдохните от проблемы

Синтаксические ошибки В принципе, синтаксические ошибки постепенно вымирают. Как помочь им в этом процессе: В принципе, синтаксические ошибки постепенно вымирают. Как помочь им в этом процессе: Не доверяйте номеру строки с ошибкой, на которую указывает компилятор (см. как минимум на ±1 строку) Не доверяйте номеру строки с ошибкой, на которую указывает компилятор (см. как минимум на ±1 строку) Не доверяйте сообщениям компилятора Не доверяйте сообщениям компилятора Еще меньше доверяйте всем сообщениями компилятора после самого первого ("наведенные ошибки") Еще меньше доверяйте всем сообщениями компилятора после самого первого ("наведенные ошибки") "Разделяй и властвуй" (особенно хорошо работает для синтаксических ошибок) "Разделяй и властвуй" (особенно хорошо работает для синтаксических ошибок) Ищите лишние комментарии, апострофы и кавычки. Ищите лишние комментарии, апострофы и кавычки.

Исправление ошибок Относительно простая задача, но именно это делает ее столь опасной (50% исправлений неправильны!) Относительно простая задача, но именно это делает ее столь опасной (50% исправлений неправильны!) Рекомендации по исправлению ошибок: Рекомендации по исправлению ошибок: Разберитесь в проблеме прежде, чем ее исправлять Разберитесь в проблеме прежде, чем ее исправлять Разберитесь в программе, а не в проблеме (исследование в 1986 г. показало, что с исправлением лучше справляются те программисты, которые понимают контекст программы; под контекстом понимается несколько сот строк, а не 1-2) Разберитесь в программе, а не в проблеме (исследование в 1986 г. показало, что с исправлением лучше справляются те программисты, которые понимают контекст программы; под контекстом понимается несколько сот строк, а не 1-2) Убедитесь в правильности диагноза до исправления Убедитесь в правильности диагноза до исправления Не торопитесь! Не срезайте углы. Не торопитесь! Не срезайте углы.

Методы исправления ошибок Рекомендации по исправлению ошибок: Рекомендации по исправлению ошибок: Сохраняйте исходную версию кода Сохраняйте исходную версию кода Исправляйте проблему, а не симптомы: Исправляйте проблему, а не симптомы: Исправления, ориентированные на симптомы, почти никогда не будут работать Исправления, ориентированные на симптомы, почти никогда не будут работать "Заплатки" на коде невозможно сопровождать "Заплатки" на коде невозможно сопровождать Компьютеры предназначены для систематических вычислений – оставим "творческий подход" для людей Компьютеры предназначены для систематических вычислений – оставим "творческий подход" для людей Вносите исправления только тогда, когда вы уверены Вносите исправления только тогда, когда вы уверены Вносите изменения по одной штуке за раз Вносите изменения по одной штуке за раз Проверяйте свои исправления Проверяйте свои исправления Ищите похожие ошибки Ищите похожие ошибки

Психологические соображения при отладке Отладка – это психологически сложный процесс: Отладка – это психологически сложный процесс: Приходится искать ошибку в собственном коде Приходится искать ошибку в собственном коде Приходится думать последовательно и логично Приходится думать последовательно и логично Приходится переключаться между разработкой и тестированием Приходится переключаться между разработкой и тестированием Приходится бороться со знакомоством с кодом Приходится бороться со знакомоством с кодом "Психологические установки" "Психологические установки"

Психологические установки Студенты, обучавшиеся структурному программированию, ожидают, что все конструкции похожи на три базовые операции (но код с goto ведет себя по-иному) Студенты, обучавшиеся структурному программированию, ожидают, что все конструкции похожи на три базовые операции (но код с goto ведет себя по-иному) Студенты, изучающие цикл while, зачастую подразумевают, что условие проверяется постоянно (а не в конце или начале цикла) Студенты, изучающие цикл while, зачастую подразумевают, что условие проверяется постоянно (а не в конце или начале цикла) Ошибки в присваиваниях примерно в три раза сложнее для обнаружения, чем "ошибки взаимодействия" Ошибки в присваиваниях примерно в три раза сложнее для обнаружения, чем "ошибки взаимодействия" Анекдот: программист случайно использовал переменные SYSTSTS и SYSSTSTS как одну и ту же переменную. Ошибку нашли только после сотен запусков и издания книги с кодом Анекдот: программист случайно использовал переменные SYSTSTS и SYSSTSTS как одну и ту же переменную. Ошибку нашли только после сотен запусков и издания книги с кодом Типичная ошибка – "подразумеваемые скобки": Типичная ошибка – "подразумеваемые скобки":

Психологическое расстояние Психологическое расстояние определяет легкость различия различных слов людьми: Психологическое расстояние определяет легкость различия различных слов людьми: Первая переменная Вторая переменная Психологич. Расстояние STOPPTST0PPT Почти ноль SHIFTRFSHIFTRT Мало заметно CLAIMS1CLAIMS2Небольшое GCOUNTCCOUNTНебольшое PRODUCTSUMБольшое

Средства отладки Существует целый вагон средств, которые могут помочь при отладке: Существует целый вагон средств, которые могут помочь при отладке: Компараторы исходных текстов Компараторы исходных текстов Предупреждения компилятора Предупреждения компилятора Поставьте максимальный уровень предупреждений в компиляторе и исправляйте код соответствующим образом Поставьте максимальный уровень предупреждений в компиляторе и исправляйте код соответствующим образом Считайте предупреждения ошибками Считайте предупреждения ошибками Создавайте проектные соглашения по установкам компилятора Создавайте проектные соглашения по установкам компилятора Дополнительные средства проверки синтаксиса (lint - верификатор C-программ) Дополнительные средства проверки синтаксиса (lint - верификатор C-программ) Профайлеры Профайлеры

Использование отладчика Современные отладчики умеют очень много: Современные отладчики умеют очень много: Точки останова на конкретных строчках кода Точки останова на конкретных строчках кода Остановка на n-ой итерации цикла Остановка на n-ой итерации цикла Остановка при изменении переменных Остановка при изменении переменных Остановка при присваивании конкретного значения Остановка при присваивании конкретного значения Прохождение кода строчка за строчкой Прохождение кода строчка за строчкой Откат по программе Откат по программе Исследование всех данных в программе, включая типы, определенные пользователем Исследование всех данных в программе, включая типы, определенные пользователем Присваивание новых значений переменным Присваивание новых значений переменным Продолжение исполнения программы Продолжение исполнения программы Многоязыковая отладка (язык1, язык2, ассемблер...) Многоязыковая отладка (язык1, язык2, ассемблер...) Запоминание установок Запоминание установок

Установка точки останова на изменение переменной

Критика отладчиков "An interactive debugger is an outstanding example of what is NOT needed – it encourages trial-and-error hacking rather than systematic design, and also hides marginal people barely qualified for precision programming" "An interactive debugger is an outstanding example of what is NOT needed – it encourages trial-and-error hacking rather than systematic design, and also hides marginal people barely qualified for precision programming" Harlan Mills Harlan Mills Отладчик действительно не заменяет мозгов, но и обратное не полностью верно Отладчик действительно не заменяет мозгов, но и обратное не полностью верно Отладчик – это мощный инструмент. При правильном использовании, он дает большие преимущества; при неправильном – можно повредиться Отладчик – это мощный инструмент. При правильном использовании, он дает большие преимущества; при неправильном – можно повредиться