Что делать, если программа не работает
Кратко
- убедитесь, что ошибка вызвана не вашими некорректными действиями
- повесьте баг в Багзиллу
- попробуйте локализовать и устранить ошибку самостоятельно
Да, такое иногда случается даже в Линукс: вы запускаете какую-то программу, а она не запускается. Или делаете какое-то совершенно безобидное действие в программе, и она вдруг закрывается. Тогда не исключено, что вы нашли ошибку в программе.
Кто сломал программу?
Первым делом вам надо убедиться, что это не вы «сломали» программу. Например, если вы недавно вручную отредактировали конфигурационные файлы программы (даже если вы считаете на 200 %, что все сделали правильно), попробуйте вернуть старые конфиги (я надеюсь, вы уже поняли, зачем сохранять старые конфиги :)).
Если вы недавно обновили систему, то это тоже следует вспомнить. Возможно, обновлённая версия программы требует изменений в настройках, несовместима со старыми конфигами, или просто напросто содержит ошибку :)
Если вы только что перезагрузили свою систему выдёргиванием вилки из розетки или кнопкой reset, то это может быть причиной повреждения файлов на диске. И, как следствие, некорректной работы программ.
Хуже всего, если вы уже год ничего не трогали в вашей системе, вчера вечером всё работало, а сегодня утром вдруг развалилось. Тогда у вас серьёзные проблемы, причём, скорее всего, аппаратные: пора пылесосить системный блок, сменить планку памяти, или отправить на покой жёсткий диск.
Что делать с ошибкой?
Итак, вы убедились, что не сами сломали программу. Что делать? Нужно занести сообщение об ошибке в систему отслеживания ошибок. Написано множество заметок и трактатов по поводу того, как и что писать в Багзиллу. Кратко изложу основные принципы ещё раз:
- укажите версию вашего дистрибутива (включая обязательное упоминание об точечных обновлениях, если они были)
- укажите точную версию программы. Например, написать «у меня Gimp 2.6» будет крайне неверно. Вместо этого покажите вывод команды rpm -q ИМЯ_ПАКЕТА:
[alexei@threebears ~]$ rpm -q gimp gimp-2.6.3-alt1
- кратко напишите, в чем заключается ошибка, и что нужно делать, чтоб ее воспроизвести. Если надо, приложите файлы, на которых проявляется ошибка.
- никогда ничего не пишите своими словами! Например, сообщение вида «программа сказала что-то типа что не хватает памяти или как-то так» скорее всего будут проигнорированы, а ваш «рейтинг» в глазах разработчиков снизится до уровня плинтуса. Вместо этого пишите точные сообщения и логи (где их брать см. ниже).
Если вы не уверены, что нашли ошибку, попробуйте уточнить на форуме или в рассылке. Напишите туда сообщение согласно выше приведённым рекомендациям.
Если вы знаете, как устранить ошибку, или нашли сайт в интернете, где уже обсуждалась похожая ошибка, и есть что-то, напоминающее решение, то обязательно укажите это в сообщении. Этим вы облегчите жизнь мейнтейнеру пакета, и ускорите процесс исправления ошибки.
Где именно сломалось?
Иногда случается, что программа отваливается совершенно без симптомов. Но это бывает редко, если уметь «запускать» программы. Обычно от программы можно получить достаточно сведений для определения причины ошибки.
Не запускайте неработающую программу из меню КДЕ (или любой другой среды) или через значок на рабочем столе. Откройте терминал, наберите в нем имя исполняемого файла программы, и нажмите ввод. Если вы не знаете, какой командой запускается программа, подсмотрите её в свойствах значка или пункта меню.
Пример:
[raf@raflinux ~]$ seamonkey /usr/lib/seamonkey-1.1.14/run-mozilla.sh: line 197: 7322 Ошибка сегментирования $RUNS
В данном примере при попытке запустить программу seamonkey, выдается сообщение об ошибке. Опытные пользователи из данного сообщения могут почерпнуть сведения о причинах ошибки, и о способах её устранения.
Многие программы протоколируют свою работы в log-файлах. И в случае возникновения какой-либо ошибки, информация в лог-файлах может оказаться крайне ценной. Большинство логов следует искать в каталоге /var/log. Многие программы имеют ключи запуска, с помощью которых можно увеличить степень подробности лог-файлов. Обычно, эти ключи следует искать в man по ключевым словам log или debug.
Например, в man smbd можно прочитать:
-d|--debuglevel=level level is an integer from 0 to 10. The default value if this parameter is not specified is 0. The higher this value, the more detail will be logged to the log files about the activities of the server.
То есть с помощью ключа -d можно менять степень детализации. Кроме того, обычно можно указать имя файла, в который будет записываться журнал.
Один из наиболее часто востребованных лог-файлов является файл /var/log/Xorg.0.log, в котором содержится протокол работы графической подсистемы.
Ещё один важный лог-файл это /var/log/messages, в котором находится системный журнал. В нем отображаются все основные процессы, происходящие в системе, включая сведения об аппаратных ошибках, подключаемых съёмных устройствах и т. п. (обратите внимание, что чтение данного файла возможно только руту).
Как устранить проблему?
Если проблема вызвана некорректными настройками программы, то воспользуйтесь старыми настройками, сохранёнными в резервной копии ваших данных. Если такой возможности нет, то стоит попробовать «отодвинуть в сторону» имеющиеся настройки, и запустить программу с настройками по умолчанию. Обычно, под «отодвинуть в сторону» подразумевается временное удаление (переименование, перемещение) каталога с настройками программы. Настройки программ лежат в домашнем каталоге пользователя, в подкаталогах, начинающихся с точки, например в ~/.licq или ~/.blender. Приложения KDE хранят свои настройки в ~/.kde/share/apps или других каталогах в каталоге ~/.kde (~/.kde4 для KDE4). Если вы не знаете, где именно находятся настройки, то создайте нового пользователя, залогиньтесь им, и попробуйте запустить подозрительную программу.
Где именно сломалось, для опытных пользователей
Иногда локализовать ошибку помогает использование программы strace. Особенно хорошо работает для обнаружения проблем с правами доступа к файлам (устройствам), необходимым для работы программы.