подумал, что это возможно, если баги возникнут в окне багов. И хотя оно до сих пор определяло ошибки с точностью до 100%, но это было возможно. Он не нашел ошибку в своем файле, просмотрев его много раз.
«В строке 735 точно ничего нет...»
Более того, строка была пустой. Однако даже когда он запустил снова, результат был таким же.
* Вздох * «Что, черт возьми, это за проблема?» Даже если это ошибка, почему используется более 90% от лимита оборудования?»
Это была целая куча всего, что он не понимал; Почему такая ошибка вдруг произошла и почему используется более 90% от лимита оборудования.
***
Позвонил помощник Пак, который был в серверной. Проблема была в системном журнале - чрезмерно увеличен размер файла системного журнала веб-сервера.
«Эй, почему размер файла стал таким большим?»
-Мы не знаем. Мы удалили этот файл, но размер стремительно увеличился сразу после удаления.
«Проклятие, это убивает меня».
- Сейчас я удалю файлы журнала, а пока все сотрудники компании подрядчика доделают свою работу на резервном сервере, так что будет лучше, если вы быстро выясните причину.
«Может, в протоколе было указано, где произошла ошибка?»
- Ох, я не рассказал вам об этом. Это похоже на ошибку, которая у нас возникла в минувшие выходные. Ничего не выводится, нет никакого протокола печати из оператора try-catch или информации, где произошла ошибка. В файле журнала одни пробелы.
«...Я хочу убить того, кто это сделал».
-Убьете кого-нибудь позже, решение проблемы на первом месте.
«Хорошо. Помощник менеджера Ким говорит, что он установил источник вчера, поэтому мы, вероятно, найдем проблему в нем. Так что побудьте там подольше».
-Да, менеджер.
Менеджер Чхве, закончив звонок, позвал Ким Вонхо.
«Помощник менеджера Ким, вы нашли что-нибудь?»
«Еще нет».
«Помощник менеджера Пак только что связался со мной. Видимо файлы журнала накапливаются и съедают аппаратное ограничение».
«Что он сказал о содержании ошибки?»
«По-видимому, нет никакого содержимого. Файлы пусты».
«Хм...»
Ким Вонхо поглаживал подбородок с не совсем понимающим видом.
«Кто редактировал код?»
«Мисс Сумин и г-н Ёнхо».
«Найди любые пробелы в отчете об ошибке throw new в источниках и отправь им обоим».
Строка, которая была в окне багов, мелькнула в голове Ёнхо, слышавшем разговор между менеджером Чхве и Ким Вонхо.
throw new Exception(“ “);
«Значит, окно багов показало правильно, так?»
Если файл журнала был пустым, значит, ошибка возникла из-за оператора throw new Exception, как и показало окно багов. Пробелы между двойными кавычками накапливались в лог-файле.
«Итак, throw new Exception означает, что программист сделал ошибку специально... это означает, что строка была добавлена к источнику».
Ёнхо проверил источник, который он загрузил в SVN. Он загрузил его перед отправкой Вонхо. Он узнал от помощника менеджера Со, что надо зафиксировать источники в SVN перед их загрузкой на коммерческий сервер.
Я не могу найти его, сколько бы ни смотрел...»
Но строки throw new Exception нигде не было.
Глава 19. Регулярный мониторинг (3)
В то время как все работники компании клиента («Гап») ушли домой, сотрудники компании-подрядчика («Ыль») не могли этого сделать. В то же время из угла офиса прозвучал голос надежды. Это был Ким Вонхо.
«Менеджер, я нашел проблему»
«Серьезно? Что это за проблема?»
«В измененном источнике. Там был throw new Exception»
«Что?»
«Вероятно, это файл, который я получил от г-на Ёнхо...» - произнес невнятно Ким Вонхо, посмотрев на Ёнхо.
«Что такое? Отправьте его мне».
Менеджер Чхве, просмотрев файл, который отправил ему Вонхо, позвал Ёнхо.
«Почему ты написал такой код?»
Ёнхо уверенно ответил менеджеру Чхве, который был зол.
«Это сделал не я»
«Что?»
«Код с ошибкой - это не я написал»
«Тогда кто?»
«Откуда мне знать?»
На этот раз, Ёнхо взглянул на Ким Вонхо. Он сказал про себя «Это ты сделал, да?» Момент, когда Ким Вонхо сказал, что нашел проблему, превратил его подозрения в уверенность.
«Помощник менеджера Ким, что здесь происходит? Г-н Ёнхо говорит, что он не делал этого».
Ким Вонхо пристально посмотрел на Ёнхо.
«Г-н Ёнхо. Это серьезная проблема. Каждый может совершить ошибку. Вам просто нужно быть честными».
«Это не тот файл, который я редактировал»
«Тогда кто, вы говорите, это сделал?»
Ким Вонхо делал из Ёнхо преступника до конца. Но Ёнхо не дрогнул.
«Откуда мне знать?»
«Как вы можете не знать! Перестаньте притворяться невинным!»
Как только он повысил голос, вмешался менеджер Чхве.
«Так, так! В первую очередь мы должны исправить ошибки. Итак, давайте займемся этим».
«У меня есть исходный файл, поэтому мы можем просто использовать его. Я залил файл на SVN после отправки его помощнику Ким Вонхо, когда он сказал, что загрузит его на коммерческий сервер.
SVN - широко используемый источник хранения. Принцип заключается в том, что только источники, связанные с выполнением программы на сервере, могут быть сохранены на нем. Подтвердить изменение кода - значит загрузить его.
«О, правда?»
«Да».
«Хорошо. Я проверю. Сначала вернитесь на свои места»
Ёнхо и Ким Вонхо вернулись на свои места, менеджер Чхве тоже сел на свое место и загрузил источник через SVN.
"Хм. Г-н Ёнхо был прав»
Нигде в источнике, загруженном из SVN, не было throw new Exception. Кроме того, время загрузки ясно показывало, что файл был загружен после его отправки Вонхо.
«Здесь правильное условие и для while-цикла».
Использование более 90% лимита произошло из-за ошибки while-цикла (*цикл с предусловием). Цикл с предусловием — цикл, который выполняется пока истинно некоторое условие, указанное перед его началом. Они жестко закодировали условие, таким образом, это станет верным, и поэтому приведет к бесконечному циклу ошибок.
Как правило, ошибки, которые были найдены, выводятся в протоколе, где указывается место ошибки, но throw new Exception - это намеренная ошибка программиста. Программист оставил содержимое ошибки пустым, поэтому никаких протоколов не останется.
* Вздох * «Этот ублюдок Ким Вонхо реально сошел с ума в это раз?»
Менеджер Чхве тоже думал, что виновник Ким Вонхо. В измененном источнике Ёнхо повсюду были комментарии. Он писал комментарии о том, когда и почему он изменил что-то. Однако только оператор throw не имел никаких комментариев. Так что выходило, что виновным может быть только Ким Вонхо.
Нет никаких причин у стажера случайно вставить оператор throw, загрузив сначала файл на SVN, а затем отправив его Вонхо. А вот вероятность того, что