Отладчики программ. Начал тормозить компьютер? Пробуем наладить сами

08.04.2019

Здравствуйте.

При работе за компьютером иногда случаются разного рода сбои, ошибки, и докопаться до причины их появления без специального софта - задача не простая! В этой справочной статье я хочу разместить лучшие программы для тестирования и диагностики ПК, которые помогут в решении самого разного рода проблем.

Кстати, некоторые из программ могут не только восстановить работоспособность компьютера, но и «убить» Windows (придется переустанавливать ОС), либо привести к перегреву ПК. Поэтому, будьте осторожны с подобными утилитами (экспериментировать, не зная что делает та или иная функция - точно не стоит).

Тестирование процессора

Рис. 1. главное окно CPU-Z

Бесплатная программа для определения всех характеристик процессора: наименование, тип ядра и степпинг, используемый разъем, поддержку тех или иных мультимедийных инструкций, объем и параметры кэш-памяти. Есть портативная версия, не нуждающаяся в установке.

Кстати, процессоры даже одного наименования могут несколько различаться: например, различные ядра с разными степпингами. Часть информации можно узнать на крышке процессора, но обычно она далеко спрятана в системном блоке и добраться до нее не просто.

Еще не маловажным плюсом данной утилиты является ее возможность создать текстовый отчет. В свою очередь, такой отчет может пригодиться при решении самого разного рода задач при проблеме с ПК. Рекомендую иметь подобную утилиту в своем арсенале!

Одна из самых часто-востребованных утилит, по крайней мере, на моем компьютере. Позволяет решать самый разнообразный спектр задач:

Контроль за автозагрузкой (удаление всего лишнего из автозагрузки );

Контролировать температуру процессора, жесткого диска, видеокарты ;

Получение суммарной информации по компьютеру и по любой его «железке» в частности. Информация бывает незаменимой при поиске драйверов на редкое железо:

В общем-то на мой скромный взгляд - это одна из лучших системных утилит, содержащая в себе все самое необходимое. Кстати, многие опытные пользователи знакомы с предшественником этой программы - Everest (кстати, они очень похожи).

Одна из лучших программ для тестирования работоспособности процессора и оперативной памяти компьютера. В основе программы лежат сложные математические вычисления, которые способны полностью и надолго загрузить даже самый мощный процессор!

Кстати, работает программа во всех популярных ОС Windows на сегодняшний день: XP, 7, 8, 10.

Мониторинг и анализ температуры

Температура - это один из показателей работы, который может многое сказать о надежности ПК. Температуру меряют, обычно, у трех компонентов ПК: процессора, жесткого диска и видеокарты (именно они, чаще всего, и перегреваются).

Кстати, довольно неплохо замеряет температуру утилита AIDA 64 (о ней выше в статье, так же рекомендую эту ссылку: ).

SpeedFan

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

Core Temp

Небольшая программа, которая замеряет температуру прямо с датчика процессора (минуя лишние порты). По точности показания - одна из лучших в своем роде!

Программы для разгона и мониторинга работы видеокарты

Кстати, для тех, кто хочет ускорить видеокарту без использования сторонних утилит (т.е. никакого разгона и никаких рисков), рекомендую ознакомиться со статьями по тонкой настройки видеокарт:

Рис. 6. Riva Tuner

Очень популярная некогда утилита для тонкой настройки видеокарт Nvidia. Позволяет произвести разгон видеокарты Nvidia как через стандартные драйвера, так и «напрямую», работая с железом. Именно поэтому, работать с ней следует аккуратно, пе перегибая «палку» с настройками параметров (тем более, если у вас еще не было опыта работы с подобными утилитами).

Так же весьма не плохо эта утилита может помочь с настройками разрешения (его блокировки, во многих играх пригодиться), частоты кадров (не актуально для современных мониторов).

Кстати, в программе есть свои «базовые» настройки драйверов, реестра для тех или иных случаев работы (например, при запуске игры утилита может переключить режим работы видеокарты на требуемый).

Рис. 7. ATITool - главное окно

Очень интересная программа программа для разгона видеокарт ATI и nVIDIA. В ней есть функции автоматического разгона, так же имеется в наличие специальный алгоритм «нагрузки» видеокарты в трёхмерном режиме (см. рис. 7, выше).

При тестировании в трехмерном режиме, можно узнать количество FPS, выдаваемое видеокартой при той или иной тонкой настройке, так же сразу заметить артефакты и дефекты в графике (кстати, этот момент означает - что дальше разгонять видеокарту опасно). В общем-то незаменимый инструмент при попытках разгона графического адаптера!

Восстановление информации при случайном удалении или форматировании

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

Восстановление документов Word -

Определение неисправности (первичная диагностика) жесткого диска по звуку:

Огромный справочник самых популярных программ для восстановления информации:

Тестирование оперативной памяти

Так же тема довольно обширная и в двух словах не рассказать. Обычно при проблемах с оперативной памятью ПК ведет себя следующим образом: зависает, появляются « «, самопроизвольная перезагрузка и пр. Более подробно, см. ссылку ниже.

Анализ и тестирование жесткого диска

Анализ занимаемого места на жестком диске -

Тормозит жесткий диск, анализ и поиск причин -

Проверка жесткого диска на работоспособность, поиск бэдов -

Очистка жесткого диска от временных файлов и «мусора» -

На этом у меня сегодня все. Буду признателен за дополнения и рекомендации по теме статьи. Удачной работы за ПК.

Windows 7 мраморный век империи из Редмонда

«Я принял Рим кирпичным, а оставляю мраморным» сказал в последние годы жизни известнейший римский император Октавиан Август. Что ж, если бы в 2009 году Майкрософт прекратила свое существования, что-то похожее можно было бы сказать с уверенностью.

Вспомните Windows 3.11, если вам приходилось ей пользоваться. Напоминающая тетрис в современном понимании она все же была фурором своего времени.

Времена изменились. Сегодня к ОС применяются куда более высокие требования. Анонсированная 22 октября 2009 года Windows 7 оказалась неким «мраморным веком» компании Майкрософт. Хотя с момента запуска системы прошло уже более 6 лет и сменилось еще два поклонения ОС, почти 60% от общего числа пользователей Windows пользуются именно «семеркой».

Почему Windows 7?

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

Кроме того, Майкрософт потренировались, отшлифовали все косяки и теперь, вот встречайте Windows 7.

Отличительные черты Windows 7

Официальную Windows 7 отличает отличная стабильность. Если вы пользовались , наверное, помните, что стабильной тогда была только необходимость переустанавливать систему примерно раз в полгода для хорошей работы ПК. Windows 7 же у пользователей стояла 2-3 года, а при уходе за ПК — даже дольше.

Новый, приятный интерфейс стали еще одним важным отличием. После квадратных форм XP, 7-ка была действительно красивой. Режим Aero также придавал свою изюминку.

Настройка Windows 7

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

Стоит ли удалить Windows 7?

Если ли смысл сейчас менять то, что уже устоялось, оставлять «мрамор»? Или хороша пословица: «Лучше синица в руках, чем журавль в небе». Каждый примет свое решение. В этом разделе PCgu.ru можно найти статьи и видео о том, как установить Windows 7 и о восстановлении этой ОС.

Все мы помним насколько быстро и четко выполняет операции только что купленный компьютер или после переустановки операционной системы. Но вот проходит время и этот же компьютер доводит нас чуть ли не до бешенства, настолько медленно происходит выполнение команд, а то и вовсе комп зависает, что думаешь, пора вызывать мастера.

Не спешите, вероятно эти проблемы вызваны не «железом» компьютера (хотя и это возможно, причины: заполен жёсткий диск, мало оперативной памяти, перегрев процессора), а мусором в операционной системе и реестре. В компьютере имеются средства для диагностики и отладки операционной системы .

Очистка от мусора
Кликаем по кнопке «Пуск» и переходим< все программы> стандартные>служебные>очистка диска(фото) , в открывшемся окошке нажимаем «ОК».

По окончании анализа будет предложено произвести очистку папок

выбор папок для очистки

Жмём «ОК»

Дефрагментация

Выполняем предыдущую процедуру < все программы> стандартные> служебные> Дефрагментация

Дефрагментация дисков-анализ

Дефрагментируем диски, хотя можно обойтись и одним на котором установлена операционная система(обычно он стоит первым).

Зайдите в «Пуск» нажмите «Выполнить», в открывшемся окне введите команду msconfig и нажмите «ОК». В открывшемся окне перейдите на закладку «Автозагрузка». Убираем здесь все галочки с ненужных программ, обязательно оставьте «ctfmon» и конечно же свой антивирус. Жмем потом «Применить», далее «Ок» и «Перезагрузка». После перезагрузки компьютера поставьте галочку, чтобы Вам не напоминали о внесенных вами изменениях.

Проведенные операции несколько улучшат состояние ПК, но не на много. Для значительного улучшения необходимо воспользоваться специализированными программами, такими как WiseCare365 , Cclenar 301 или другими. Я пользуюсь сборкой «Total Commander 7.04а» , в ней имеются встроенные свободные версии Wise Disk Cleaner , Wise Registry Cleaner и управление автозагрузкой.

Панель инструментов Total Commander-7.04а.

Простой и понятный интерфейс программ не составит труда разобраться.

Хочу предостеречь от слишком частого использования программами для очистки, дело в том что при установке программы создаються временные файлы помогающие им в работе при очистке удаляются не только ненужные файлы но и некоторые нужные, что может привести к обратному эффекту.

Что же касается проблем с «железом», то после очистки компьютера возможно освободиться значительное пространство на дисках и оперативной памяти и с заменой их можно повременить.

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

Вирусы .
Вирусы тоже довольно сильно замедляют работу компьютера. Просканируйте систему, если нужно скачайте на сайте drweb.com бесплатную утилиту Dr.Web CureIt и просканируйте компьютер.

Блок питания
Еще одна возможная причина такого поведения компьютера неисправность блока питания. Возможно из-за просаженных напряжений 3,3в, 5в, 12. Вот есть инфа.

Локализация и исправление ошибок называется отладкой . Отладка - это процесс обнаружения причин возникновения ошибки и ее последующего исправления (в отличие от тестирования, являющегося процессом обнаружения самого факта существования ошибки).

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

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

Ошибки синтаксиса языка

Как правило, в абсолютном большинстве случаев ловятся на стадии компиляции программы, или же, если вы работаете с интерпретируемым языком типа Рег1 или РНР, то при первом интерпретировании программы. Но есть один существенный момент - когда выражение допустимо, но зависит от конкретного компилятора или интерпретатора. Например, в языке Си вполне допустимыми по синтаксису, но не по смыслу, являются выражения: э [ 1++] =±; ргл_г^:? ("%с! %с!" , ±++, л.++) ;. Результат этих строк не определен, так как неизвестно, в каком порядке будет инкрементироваться и вычисляться значение переменной /". Переменная не может более 1 раза присутствовать в выражении, если ее значение изменяется в ходе вычисления этого выражения.

Ошибки во время выполнения

К ошибкам во время выполнения программы относятся ошибки в логике и алгоритмах программы. Ошибки в логике программы связаны с неправильной записью алгоритма, например, вместо && вы написали || или поставили точку с запятой там, где ее не должно быть. К этому же классу ошибок относится неправильное обращение с памятью. В языке Си неправильное обращение с памятью является наиболее распространенной ошибкой программистов, причем не только новички, но и профессионалы нередко допускают ошибки подобного типа. Для языка Си - это один из самых больных вопросов и больших недостатков. Ошибки в алгоритме связаны с неправильным проектированием программы или же с изначально неправильно заложенной бизнес-логикой и функциональными требованиями. Пользователь ждет от программы то, что изначально от нее не требовалось. Ошибки во время выполнения - наиболее часто встречаемый тип ошибок, и, как правило, устранение таких ошибок не представляется чересчур сложной задачей.

Ошибки логики взаимосвязанных CGI-программ

Ошибки данного типа лежат во взаимосвязанных CGI-программах. Рассмотрим в качестве примера тестовую систему (см. сайт http://test.itsoft.ru). При сдаче теста в цикле работают два скрипта. Первый показывает вопрос, а второй проверяет правильность ответа. Если в тесте 10 вопросов, то эти CGI-скрипты вызываются парно в цикле 10 раз. Но что будет, если пользователь нажмет кнопку «Обновить» в броузере? Скрипт, который показывает вопрос, вызовется повторно. Что будет при разрыве модемного соединения? Отладка в таких системах значительно сложнее, так как вам придется наблюдать за выполнением ряда взаимосвязанных скриптов.

Ошибки многопользовательского доступа

Ошибки многопользовательских систем связаны с неправильным разграничением доступа к совместным ресурсам. Помимо файлов данных, записей в таблицах баз данных, общим ресурсов является генератор случайных чисел. На эти грабли нам пришлось наступить. Обязательно генерируйте случайные числа не только на основе времени, но и на основе уникального идентификатора процесса. В противном случае при выполнении в один и тот же момент времени двух копий одной CGI-программы вы получите одинаковые результаты для двух пользователей. Ошибки многопользовательского доступа сложны тем, что могут не проявлять себя очень долго, до тех пор, пока в один и тот же момент времени системой ни будет запущено несколько копий одной CGI-программы.

Невоспроизводимые ошибки

Невоспроизводимые ошибки представляют собой наиболее сложный тип ошибок. Например, в високосном году 29 февраля ваша система вдруг начала давать сбои, которые сами собой исчезают в невисокосном году. Но бывают ошибки, которые мистическим образом появляются и исчезают. В той же тестовой системе была непонятная ошибка, которая проявлялась 1 раз на несколько сот случаев. Непонятным образом некоторые студенты после сдачи теста получали не результаты, а сбой системы. На исправление этой ошибки ушло два рабочих дня. Оказалось, что проблема в скрипте на JavaScript, который отправлял данные HTML-формы на сервер после истечения допустимого времени ответа на вопрос. Проблема в том, что если время подходило к концу и пользователь нажимал кнопку «Ответить», а в это же время уже начала работать функция JavaScript form.submit(), то отправка данных HTML-формы происходила дважды, т. е. скрипт проверки правильности ответа вызывался 2 раза. А это за собой тянуло ошибку во взаимосвязанных CGI-скриптах, и внешнее проявление сбоя системы мы наблюдали уже при подсчете результатов, а не непосредственно сразу после двойной отправки HTML-формы. Сам код JavaScript был написан верно, и с теоретической точки зрения даже если пользователь нажимает кнопку «Отправить» в последнюю секунду, HTML-форма должна была отправляться только 1 раз. Но на практике все оказалось совсем по-другому. На самом деле ничего мистического нет, или, как говорится, чудес на свете не бывает. Просто невозможно воспроизвести условия, в которых наблюдалась невоспроизводимая ошибка. Надо искать в программе случайности: одновременный доступ к одному ресурсу, генератор случайных чисел, неинициализированные переменные, некорректная работа с памятью или преобразование типов, которые могут проявлять себя не каждый раз.

Ошибки инструментария и других компонентов системы

Ошибки самого компилятора или интерпретатора очень редки, но и такие бывают.

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

Локализация ошибки. Программа - это черный ящик, который что-то принимает на вход и выдает что-то на выходе. Первое, что вам необходимо сделать, - понять, где именно в этом черном ящике происходит сбой. Для этого уменьшайте количество параметров, передаваемых на вход программы. Добейтесь двух малоразличимых наборов входных параметров, чтобы при одном из них программа работала, а при другом нет.

Отключение ненужных модулей программы. Закомментируйте все лишнее. Тем самым вы упростите вашу программу. Имеет смысл комментировать отдельные куски программы до тех пор, пока ошибка не исчезнет.

Использование отладчика. Возможности современных отладчиков перечислены ниже:

  • точки останова на конкретных строчках кода;
  • остановка на /7-й итерации цикла;
  • остановка при изменении переменных;
  • остановка при присваивании конкретного значения;
  • прохождение кода строчка за строчкой;
  • откат по программе (далеко не все);
  • исследование всех данных в программе, включая типы, определенные пользователем;
  • присваивание новых значений переменным;
  • продолжение исполнения программы;
  • многоязыковая отладка (язык1, язык2, ассемблер...);
  • запоминание установок.

Контрольные вопросы

  • 1. Какие виды ошибок существуют?
  • 2. Что такое тест? Какими свойствами должен обладать тест?
  • 3. Каковы критерии выбора тестов?
  • 4. Дайте краткую характеристику каждому критерию выбора теста.
  • 5. Опишите последовательность разработки тестов.
  • 6. Что входит в понятие надежности ПО?
  • 7. Какие виды отказов существуют?
  • 8. Каковы количественные характеристики надежности программ?
  • 9. Что представляют собой методы оценки и измерения характеристик надежности ПО?
  • 10. Перечислите достоинства парного программирования.

При использовании интегрированной среды программирования предоставляется удобный интерфейс, позволяющий легко отлаживать разрабатываемую программу. В настоящее время стандартом де-факто стал интерфейс, похожий на программную оболочку Visual C.

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

Внешний программный отладчик. В некоторых случаях используется не интегрированная среда программирования, а отдельный транслятор с выбранного языка программирования. В этом случае можно воспользоваться любой программой, эмулирующей выбранный тип микроконтроллера. Так как объектные форматы различных трансляторов несколько отличаются друг от друга, то в качестве входного файла используется загрузочный модуль в двоичном или гексадецимальном формате. В этих форматах отладочная информация полностью отсутствует, поэтому отладку в таких программах можно вести только с помощью встроенного дизассемблера и распечатанного (или открытого в другом окне) листинга программы. Естественно, что это ещё более неудобный способ отладки по сравнению с использованием интегрированной среды программирования и внутрисхемного эмулятора.

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

При написании достаточно простых программ иногда для отладки программ используют только этот последний этап тестирования. Однако обнаружение, поиск и устранение ошибок при использовании только этого метода очень трудоёмок! Это то же самое, что пытаться настроить аппаратуру без использования приборов!

Способы отладки программ .

Отладка программ заключается в проверке правильности работы программы и аппаратуры. Программа, не содержащая синтаксических ошибок тем не менее может содержать логические ошибки, не позволяющие программе выполнять заложенные в ней функции. Логические ошибки могут быть связаны с алгоритмом программы или с неправильным пониманием работы аппаратуры, подключённой к портам микроконтроллера.


Встроенный в состав интегрированной среды программирования отладчик позволяет отладить те участки кода программы, которые не зависят от работы аппаратуры, не входящей в состав микросхемы микроконтроллера. Обычно это относится к вычислению математических выражений или преобразованию форматов представления данных.

Для отладки программ обычно применяют три способа:

1. Пошаговая отладка программ с заходом в подпрограммы;

2. Пошаговая отладка программ с выполнением подпрограммы как одного оператора;

3. Выполнение программы до точки останова.

Пошаговая отладка программ заключается в том, что выполняется один оператор программы и, затем контролируются те переменные, на которые должен был воздействовать данный оператор.

Если в программе имеются уже отлаженные подпрограммы, то подпрограмму можно рассматривать, как один оператор программы и воспользоваться вторым способом отладки программ.

Если в программе существует достаточно большой участок программы, уже отлаженный ранее, то его можно выполнить, не контролируя переменные, на которые он воздействует. Использование точек останова позволяет пропускать уже отлаженную часть программы. Точка останова устанавливается в местах, где необходимо проверить содержимое переменных или просто проконтролировать, передаётся ли управление данному оператору.

Практически во всех отладчиках поддерживается это свойство (а также выполнение программы до курсора и выход из подпрограммы). Затем отладка программы продолжается в пошаговом режиме с контролем локальных и глобальных переменных, а также внутренних регистров микроконтроллера и напряжений на выводах этой микросхемы.

Контроль данных при пошаговой отладке. При использовании встроенного отладчика программ для контроля переменных можно воспользоваться окном Watch. В большинстве случаев это намного выгоднее, чем использовать просмотр памяти данных. Переменные в этом окне отображаются в том формате, в котором они были объявлены в программе. Преобразование данных из одной формы представления в другую осуществляется встроенными средствами отладчика. Если же отладочная информация по какой либо причине была потеряна или программирование ведётся на языке программирования ассемблер, то состояние переменных можно проконтролировать просмотром содержимого внутренней и внешней памяти микроконтроллера. Для определения конкретной ячейки памяти микроконтроллера, занятой под переменную можно воспользоваться листингом, создаваемым редактором связей компилятора или самим компилятором, если не используется многомодульное программирование.