Исключения в программе и отладка исключений

From SunFlurry wiki
Jump to: navigation, search

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

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