Что делать, если программа не работает

Материал из ALT Linux Wiki
Версия от 14:51, 2 января 2009; AlexeiMezin (обсуждение | вклад) (Новая: == Что делать и куда бежать, если программа не работает == Кратко: * убедитесь, что ошибка вызвана не ваш...)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

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

Кратко:

  • убедитесь, что ошибка вызвана не вашими некорректными действиями
  • повесьте баг в Багзиллу
  • попробуйте локализовать и устранить ошибку самостоятельно

Да, такое иногда случается даже в Линукс: вы запускаете какую-то программу, а она не запускается. Или делаете какое-то совершенно безобидное действие в программе, и она вдруг закрывается. Тогда не исключено, что вы нашли ошибку в программе.


Кто сломал программу?

Первым делом вам надо убедиться, что это не вы "сломали" программу. Например, если вы недавно вручную отредактировали конфигурационные файлы программы (даже если вы считаете на 200%, что все сделали правильно), попробуйте вернуть старые конфиги (я надеюсь, вы уже поняли, зачем сохранять старые конфиги :)).

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

Если вы только что перезагрузили свою систему выдёргиванием вилки из розетки или кнопкой reset, то это может быть причиной повреждения файлов на диске. И, как следствие, некорректной работы программ.

Хуже всего, если вы уже год ничего не трогали в вашей системе, вчера вечером всё работало, а сегодня утром вдруг развалилось. Тогда у вас серьёзные проблемы, причём, скорее всего, аппаратные: пора пылесосить системный блок, сменить планку памяти, или отправить на покой жёсткий диск.

Что делать с ошибкой?

Итак, вы убедились, что не сами сломали программу. Что делать? Нужно занести сообщение об ошибке в систему отслеживания ошибок.

Где именно сломалось?

Иногда случается, что программа отваливается совершенно без симптомов. Но это бывает редко, если уметь "запускать" программы. Обычно от программы можно получить достаточно сведений для определения причины ошибки.

Не запускайте неработающую программу из меню КДЕ (или любой другой среды) или через значок на рабочем столе. Откройте терминал, наберите в нем имя исполняемого файла программы, и нажмите ввод. Если вы не знаете, какой командой запускается программа, подсмотрите её в свойствах значка или пункта меню.

Пример:

[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, в котором находится системный журнал. В нем отображаются все основные процессы, происходящие в системе, включая сведения об аппаратных ошибках, подключаемых съёмных устройствах и т.п. (обратите внимание, что чтение данного файла возможно только руту).