Документация startmedia
  • Документация StartMedia
  • Регламент
  • 📜Регламент рабочего процесса
    • 1. Цикл работы над задачей
    • 2. Работа с ветками
    • 3. Оформление коммитов
    • 4. Merge Requests
    • Правила оформления отчёта к задаче
    • Стратегии слияния веток
  • 📋Planfix - работа с задачами
    • Жизненный цикл задач
    • Типы задач
    • Структура задачи
    • Коммуникации в задаче
  • Базовые статьи
    • 🔧Настройка рабочего окружения
      • Установка необходимых программ
      • Настройка GIT
      • Настрйка OpenServer
      • Настройка окружения ОС
      • Настройка синхронизации с OneDrive
    • 🎆Развертка локальной копии сайта
      • Клонируем репозиторий
      • Копируем ядро и базу
      • Разархивируем ядро
      • Заливаем базу данных
      • Читаем README
      • Правим файлы конфигурации
      • Правим параметры сайтов
      • Выполняем проверку системы
      • Ставим галочку "Установка для разработки"
      • Создаем папку upload
      • Что может пойти не так? (казалось бы)
    • Обучающие материалы
    • Как создать Merge Request
  • Начальный уровень
    • Многосайтовость битрикс и Open Server
    • Структура шаблона
      • Установка и настройка Gulp
      • Общие правила структуры
    • Верстка
      • Стиль кода SASS
    • Работа с Битриксом
      • Правила создания структуры проекта
      • Правила создания структуры инфоблоков
      • Стандартные и пользовательские свойства в Битриксе
      • Использование API Bitrix
      • Меню
      • Модули
    • Готовые решения
      • Экспорта каталогов в YML
      • Эмулятор обмена с 1С
      • Веб формы
    • Решения для поисковой оптимизации
    • Миграции - Перенос инфоблоков с локальной копии на боевой сайт
  • Продвинутый уровень
    • Системное администрирование
      • Работа с веб-сервером
      • Настройка редиректов
      • Работа с доменами
        • Настройка SPF-записи
        • Работа с DNS записями
        • Настройка файла robots.txt
      • Создание копии битрикс в хранилище
      • Разворачивание dev версии
      • Конвертация сайта на bitrix из win1251 в utf8
      • Лечим сайт от вирусов и закрываем дыры
    • Gitlab
    • Перенос сайта на 1C-Bitrix на наш хостинг
    • Интеграции Битрикс со сторонними сервисами
      • Интеграция 1С с 1С-Битиркс
    • Дебаггинг
    • React
      • Flux на пальцах
  • Справочники
    • Apache (htaccess)
      • Стандартный htaccess для 1с-битрикс
    • Работа с Базой Данных
  • Чек-лист Project менеджера
  • Добавление подарка в корзину при добавления каждого товара
  • PhpStorm
  • Готовые команды консоли
Powered by GitBook
On this page
  • Самый известный логгер баггов на php Monolog
  • Логгер баггов от Интерволги
  • О способах хранения ошибок
  • Работа над ошибками
  • Заключение
  • Рецепты дебагинга от Раиса

Was this helpful?

  1. Продвинутый уровень

Дебаггинг

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

PreviousИнтеграция 1С с 1С-БитирксNextReact

Last updated 4 months ago

Was this helpful?

Самый известный логгер баггов на php Monolog

Надеюсь, кто нибудь когда нибудь наполнить примерами

Логгер баггов от Интерволги

Настройка собственного обработчика в .settings.php

Нужно указать свой класс-обработчик, который должен быть унаследован от ExceptionHandlerLog и реализовывать методы write(), initialize(), а также путь к файлу класса.

При появлении ошибки в обработчике нам доступна информация:

  • текст ошибки c названием файла и строкой;

  • трассировка.

Минимальный набор методов классе-обработчике

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

Формирования ID (хеша) ошибки

О способах хранения ошибок

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

Преимущества

Недостатки

Применение

Файловая система

- запись файла-ошибки - это одна операция (fwrite(), например);

- для чтения ошибок можно использовать текстовый редактор;

- файлы можно пересылать, обмениваться, делать общими;

- нужно написать свой скрипт для вывода списка, управления;

Может использоваться для учёта всех типов ошибок.

База данных

- ошибок может быть много, с подробным описанием;

- поиск, добавление, удаление средствами СУБД;

- можно добавлять дополнительные поля (комментарии, статус и прочие).

- нужно написать свой скрипт для вывода списка, управления;

- есть риск появления ошибок, которые будут препятствовать записи в БД;

- сбор ошибок создаст дополнительную нагрузку на БД сайта;

Может использоваться для учёта всех типов ошибок.

E-mail

- сообщений может быть много;

- сообщения могут содержать подробный текст ошибок.

- при большом потоке сообщений об ошибках с ними становится сложно работать;

Оповещения об ошибках типа E_ERROR, E_WARNING (т.е. единичные случаи).

Мессенджеры (XMPP)

- мгновенная доставка;

- сообщений может быть много;

- нужна программа-клиент (Psi, например);

- сообщений может быть много, но лучше, если они будут короткими, т.к. большие логи неудобно читать.

Вывод фактов появления ошибок, без подробного описания.

SMS - сообщения

- быстрая доставка;

- не нужен интернет.

- нужно оплачивать;

- сообщения должны быть короткими.

Сообщения о критических ошибках.

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

Какие категории ошибок будут в нашей системе? Предлагаю такие:

  • "новая" - тут всё понятно;

  • "обработанная" - устранена программистом или не представляет вреда;

  • "системная" - ошибка ядра, её не исправляем;

  • "пропущена" - не требует обработки, т.к. создана намеренно, в тестовой среде.

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

Для борьбы с дублями будем для каждой ошибки создавать хеш, он соответствует названию файла. А в файл помещать подробную информацию - дату/время, трассировку, можно даже комментарии программиста.

Папки-категории ошибок и файлы ошибок в категории “Новые”

Пример содержимого файла ошибки

Работа над ошибками

Перейдём к алгоритмам. Как будет работать сохранение одной ошибки:

  1. перехват в классе обработчике;

  2. создание хеша (ID);

  3. сохранение подробной информации в файл (в папку "новые").

Работать с массой файлов не удобно, поэтому напишем простой скрипт, который

  • выводит список категорий (выпадающий список);

  • выводит список ошибок выбранной категории (в виде ссылок на файлы);

  • позволяет переносить ошибку в выбранную категорию.

Тогда действия программиста:

  1. выбрать категорию "новые";

  2. кликнуть на ссылку на ошибку;

  3. обработать ошибку, переместить её в одну из категорий.

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

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

Заключение

Развивая систему, на одном из проектов мы разработали панель управления, которая программно изменяет настройки .settings, способы оповещения программиста и прочие параметры обработки.

Конечно, для обработки даже 10% ошибок E_NOTICE на большом сайте потребуется время. Но работа над ошибками превращается из чистки авгиевых конюшен в прозрачный процесс.

Рецепты дебагинга от Раиса

Раис? помоги молодым научиться, быстро находить ошибки в коде.

Цель системы учёта - выделить из общего потока ошибок, те которые нужно обработать вручную. Далее по порядку. Напомню, что перехват ошибок в Битриксе можно настроить в файле .

Настройка собственного обработчика в .settings.php
Минимальный набор методов классе-обработчике
Формирования ID (хеша) ошибки
Папки-категории ошибок и файлы ошибок в категории “Новые”
Пример содержимого файла ошибки

Список ошибок для обработки

Список ошибок для обработки

/bitrix/.settings.php
GitHub - Seldaek/monolog: Sends your logs to files, sockets, inboxes, databases and various web servicesGitHub
Список ошибок для обработки
Logo
Список ошибок для обработки