June 15th, 2019

AVG CyberCapture и отладка программ

Одна из проблем, с которыми я столкнулся при написании программ, это работа одной из антивирусных технологий под названием CyberCapture.

Работаю я в операционной системе «Windows 7 Профессиональная» (SP1). Пользуюсь антивирусом «AVG AntiVirus Free» версии 19.5.3093 (от 20.05.2019 г.). Версия интерфейса: 1.0.171, язык интерфейса — русский.

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

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

Как выглядит работа AVG CyberCapture? При запуске собранного исполняемого файла открывается окно программы, но поверх открывается еще одно окно, запущенное антивирусом, с заголовком «AVG CyberCapture». Пока это окно не закроется, работать с программой не получается. А закроется оно, как уже писалось выше, через несколько десятков секунд.



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

Как отключить AVG CyberCapture. Для этого следует открыть главное окно антивируса и в верхнем правом углу выбрать пункт «Меню». Откроется семь пунктов меню, из которых нужно выбрать «Настройки». Окно настроек разбито на три столбца, левый из которых содержит список разделов меню («Общие», «Базовая защита», «Инструменты»). Центральный столбец содержит подразделы выбранного раздела, а самая большая правая часть окна содержит, собственно, настройки выбранного подраздела.

Итак, раздел «Базовая защита», подраздел «Обнаруженные угрозы» содержит среди настроек флажок «Включить технологию CyberCapture». Если флажок снять, технология CyberCapture отключится.

Как при включенной AVG CyberCapture исключить исполняемый файл из проверки. Флажок «Включить технологию CyberCapture» оставляем включенным. Проходим в раздел «Общие», подраздел «Исключения». Нужно нажать кнопку «Добавить исключение» и в открывшемся окне с помощью кнопки «Обзор» выбрать наш исполняемый файл. Закрываем окно настроек с помощью кнопки «Закрыть» в правом нижнем углу окна.

Конфигурации решений Release и Debug

Когда я описывал в прошлом году простейшую схему работы с Visual Studio Community 2017, то до конца не понимал, зачем при написании и отладке программ нужны конфигурации решений Release и Debug, которые есть по умолчанию (вообще можно и свои создавать).

По названиям я, конечно, догадывался, что конфигурация Debug нужна при отладке программ, а конфигурация Release — при сборке готового к распространению исполняемого файла. Сразу была видна и разница в размерах исполняемых файлов, полученных при сборке: в конфигурации Release размер файла был более, чем в четыре раза меньше, чем в конфигурации Debug (видимо, за счет различных оптимизаций).

Меня ввело в заблуждение то, что среда позволяла создавать и убирать точки останова и запускать пошаговую отладку (с заходом, с обходом) в обеих конфигурациях. «Зачем же нужна конфигурация Debug, если те же возможности доступны и в конфигурации Release?» — думал я.

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

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