Публикации
Новости

поиск

ПОИСК БАГОВ: А КАК ВЫ ОХОТИТЕСЬ НА НАСЕКОМЫХ?

Так уж получилось, что в последнее время я все больше общаюсь с разнообразными web-интерфейсами, поэтому баги и недоработки, в основном, приходится искать там. В общем случае задача выглядит так: есть что-то, что работает не так. Например, некорректно генерируется или вообще не генерируется. А ты эту систему видишь первый раз в жизни. Ну ладно, второй. О ней известно только то, что она web. Хорошо, если на PHP, но, в принципе, методика не отличается для любого скриптового некомпилируемого языка. Итак, мы не видим то, что должны видеть. Как это развидеть?

Для начала определяется место, где выводится то, что нам надо видеть. Обычно при этом просматривается код страницы, ищутся идентификаторы рядом с интересующим нас местом. Чем уникальнее, тем меньше мусора потом придется разгребать. Потом в дело вступает ее величество консоль. Дело в том, что там есть прекрасные инструменты, помогающие в быстром поиске. А они вам, уж поверьте, пригодятся. Современные веб-движки щеголяют десятками тысяч файлов, объединенными в неявную структуру, которую вы можете и не понимать. А баг надо искать здесь и сейчас, не перелопачивая тонны документации по движку. Поэтому заходим в консоль, переходим в папку web-движка и выполняем grep -rl '<найденные идентификаторы>' ./. Когда поиск завершится, вдумчиво всматриваемся в список и определяем, удачно ли мы выбрали точку поиска. Если найдено больше 20 файлов, значит, надо искать что-то более уникальное. Хотя бывает так, что по структуре движка сразу становится понятно, что твое, а что просто примазалось.

Если файлов не очень много и хочется еще сильнее сузить круг поисков, выполняем команду grep -ri '<найденные идентификаторы>' ./. Обратите внимание на ключ -i. Он не только найдет нам все файлы, в которых встречается то, что мы ищем, но и покажет строку, в которой это нашлось. И это прекрасно. Сразу можно выделить конкретный файл или файлы, в которых есть то, что нам необходимо. Теперь надо посмотреть, как и что выводится в том месте, в котором происходит какая-то фигня и искать файлы, в которых это встречается.

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

Business Infinity Group

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

Политика конфиденциальности объясняет:


Общедоступная информация

Если Вы просто просматриваете сайт, информация о Вас не собирается и не публикуется на сайте.


Какую информацию мы собираем?

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


Как мы используем собранные данные

Ваше добровольное согласие оставить имя, телефон и адрес электронной почты подтверждается путем ввода вашего имени, телефона и/или адреса электронной почты в соответствующую форму. Информация, собранная после отправки формы на сайте (а именно: имя, телефон и e-mail адрес) нигде не публикуется и недоступна другим посетителям сайта. Имя используется для личного обращения к Вам, а телефон и адрес электронной почты — для уточнения вопросов. При необходимости использовать Ваши данные для целей, не упомянутых в настоящей политике конфиденциальности, мы всегда запрашиваем предварительное согласие на это.


Условия передачи информации третьим лицам

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


Протоколирование

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


Куки (Cookie)

На сайте используются куки (Cookies), происходит сбор данных о посетителях с помощью сервисов Яндекс Метрика. Эти данные служат для сбора информации о действиях посетителей на сайте, улучшения качества его содержания и возможностей. В любое время Вы можете изменить параметры в настройках Вашего браузера таким образом, чтобы браузер перестал сохранять все файлы cookie, а так же оповещал их об отправке. При этом следует учесть, что в этом случае некоторые сервисы и функции могут перестать работать.


Изменение Политики конфиденциальности

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


Business Infinity Group
×
Подписка на рассылку
[subscribe2]
×
Заказать обратный звонок

×