Как писать баг репорт или давайте соберём грамотный анамнез Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:как_писать_баг_репорт [2010/01/09 02:25]
wiki:как_писать_баг_репорт [2016/05/20 15:27] (текущий)
переиндексация тегов
Строка 1: Строка 1:
 ====== Как писать баг репорт или давайте соберём грамотный анамнез ====== ====== Как писать баг репорт или давайте соберём грамотный анамнез ======
-На форуме,​ куда вы обращаетесь за помощью сидят люди, которые часто искренне хотят Вам помочь :-) И чтобы не огорчать их фразами "у меня ничего не работает!"​ давайте грамотно и профессионально опишем проблему! Тогда, как максимум,​ возможно вы сами уведите, где ошибка. Ну или, как минимум,​ вы можете рассчитывать на вежливый ответ.+На форуме,​ куда вы обращаетесь за помощью сидят люди, которые часто искренне хотят Вам помочь :-) И чтобы не огорчать их фразами "у меня ничего не работает!"​ давайте грамотно и профессионально опишем проблему! Тогда, как максимум,​ возможно вы сами увидите, где ошибка. Ну или, как минимум,​ вы можете рассчитывать на вежливый ответ. 
 ===== Сеть ===== ===== Сеть =====
-Тема общая... поэтом у и рекомендации общие+Тема общая... поэтому и рекомендации общие
  
-1. Описать структуры сети. Например,​ "у меня 3 компьютера ОС "​такая-то",​ главный получает интернет от провайдера по VPN|PPPOE|NAT|ещё что-н, с главного интернет раздаётся через NAT|(проски-сервер),​ файрволы стоят в режиме всё пропускать"​ или "у меня 2 компа ОС "​такая-то"​ и роутер марка такая-то"​ и далее+1. Описать структуры сети. Например,​ "у меня 3 компьютераОС "​такая-то",​ главный получает интернет от провайдера по VPN|PPPOE|NAT|ещё что-нибудь, с главного интернет раздаётся через NAT|(прокси-сервер),​ файрволы стоят в режиме всё пропускать"​ или "у меня 2 компаОС "​такая-то"​ и роутер марка такая-то"​ и далее...
  
-2. Выводы команд ifconfig, route, cat /​etc/​resolv.conf,​ sudo iptables -L. Также стоит попытаться провести пингование подобное пункту 2 раздела,​ посвящённого Samba.+2. Выводы команд ifconfig, route, cat /​etc/​resolv.conf,​ sudo iptables -L. Также стоит попытаться провести проверку соединения утилитой ping подобную пункту 2 раздела,​ посвящённого Samba.
  
 Файлы с настройками (если больше 5 строк) следует очистить от паролей и важных для вас адресов и приложить к сообщению вложением. Файлы с настройками (если больше 5 строк) следует очистить от паролей и важных для вас адресов и приложить к сообщению вложением.
  
 ===== Проблемы с Samba. Расшаривание файлов по сети ===== ===== Проблемы с Samba. Расшаривание файлов по сети =====
-1. берём ​конфигурационный файл ​samba+1. Тест конфигурационного ​файла Samba.
  
 Выполните команду "​testparm"​ и сохраните вывод этой команды. ​ Выполните команду "​testparm"​ и сохраните вывод этой команды. ​
Строка 17: Строка 18:
 Эта команда диагностирует файл /​etc/​samba/​smb.conf на синтаксические ошибки,​ а также, что более важно, показывает как видит samba файл с настройками. Эта команда диагностирует файл /​etc/​samba/​smb.conf на синтаксические ошибки,​ а также, что более важно, показывает как видит samba файл с настройками.
  
-2. пингуем машины в сети+2. Проверяем соединение компьютеров ​в сети ​с помощью утилиты ping.
  
-Попытайтесь выполнить следующие ​комбинации ​пингования+Попытайтесь выполнить следующие проверки:
  
-2.1 ping server (c машины ​client)+2.1 ping server (c компьютера client)
  
-2.2 ping client (c машины ​client)+2.2 ping client (c компьютера client)
  
-2.3 ping ip_адрес_server (c машины ​client)+2.3 ping ip_адрес_server (c компьютера client)
  
-2.4 ping ip_адрес_client (c машины ​client)+2.4 ping ip_адрес_client (c компьютера client)
  
-Где server - имя машины, где установлена ​samba, a ip_адрес_server - ip адрес этой машины. Для client аналогично ​;)+Где server - имя ​компьютера, где установлена ​Samba, a ip_адрес_server - ip адрес этого компьютера. Для client ​проверка проводится ​аналогично.
  
-3. пытаемся залогинется на сервер разными способами :)+3. Проверка доступа к ресурсам сервера.
  
-3.1 с машины ​server выполним smbclient -L \\server+3.1 С компьютера server выполним smbclient -L \\server
  
-3.2 с машины ​client выполним smbclient -L \\server+3.2 С компьютера client выполним smbclient -L \\server
  
-3.3 с машины ​client выполним smbclient -L \\ip_адрес_server+3.3 С компьютера client выполним smbclient -L \\ip_адрес_server
  
 Аккуратно записываем результаты тестов и [[http://​forum.ubuntu.ru/​index.php?​action=post;​board=27.0|на форум в раздел сети]]! Аккуратно записываем результаты тестов и [[http://​forum.ubuntu.ru/​index.php?​action=post;​board=27.0|на форум в раздел сети]]!
  
  
-===== Железо. Переферия =====+===== Железо. Периферия =====
  
-Проблемы с железом... когда-то бич линукс систем. И судя по тому, что вы читаете этот раздел,​ то не повезло и вам. Печально. И так возможно не всё потеряно,​ что нам будет надо+Проблемы с железом... когда-то бич линукс систем. И судя по тому, что вы читаете этот раздел,​ то не повезло и вам. Печально. И так возможно не всё потеряно,​ что нам ​потребуется:
  
-1. Какая используется версия ядра (именно в нём находятся все драйвера)вывод команды uname -a+1. Версия ядра (именно в нём находятся все драйвера) ​— вывод команды uname -a.
  
-2. Если устройство usb Вывод консольной команды lsusb и dmesg | tail после подключения устройства+2. Если устройство usb — вывод консольной команды lsusb и dmesg | tail после подключения устройства
  
-Если устройство pci, то вывод lspci+Если устройство pci — вывод lspci
  
  
Строка 62: Строка 63:
  
  
 +===== Программа перестала работать =====
 +1. Запускаем программу из терминала и ищем сообщения об ошибках.
 +
 +2. Часто проблемы бывают скрыты в настройках,​ которые мы сделали. Найдите директорию с настройками в своей домашней папке и переименуйте её. При следующем запуске будет создана новая директория с настройками по умолчанию.
 +
 +===== Копаемся в системных журналах =====
 +
 +==== Что такое системные журналы ====
 +У всех у нас есть на компьютере замечательная папка ​ /​var/​log ​ в которой размещены различные системные журналы. Большая часть приложений серверного уровня (таких как ​ apache, samba  и т.д.) и многие пользовательские приложения регулярно сбрасывают отчеты о своей активности в соответствующие log-файлы. Помимо этого, там же можно найти отчеты о работе различного оборудования и системы в целом. Основной файл называется syslog, и имеет полный путь ​ /​var/​log/​syslog.\\
 +Для просмотра системных журналов можно использовать встроенное в Ubuntu приложение,​ //​Система -> Администрирование -> Программа просмотра журналов//,​ или воспользоваться командой((через CLI или терминал)):​
 +<​code>​
 +sudo tail /​var/​log/​[имя_log_файла]
 +</​code>​
 +Например,​ для просмотра файла авторизаций ​ auth.log:
 +<​code>​
 +sudo tail /​var/​log/​auth.log
 +</​code>​
 +Команда ​ tail  выводит на экран последние 10 строк файла. Более подробно про нее см.:
 +<​code>​
 +man tail
 +</​code>​
 +По сути - log файлы - это обычные текстовые файлы, и смотреть их, соответственно,​ можно любым удобным текстовым редактором. Однако,​ стоит заметить,​ что файлы журналов часто бывают достаточно большие по объему и по числу строк, а большинство текстовых редакторов открывают файл с начала,​ а не с конца, поэтому и удобно пользоваться утилитой ​ tail. Если вы примерно представляете себе, что именно вы ищете - вы можете выполнить поиск по словам,​ например,​ для уже упомянутого ​ auth.log ​ - поиск авторизаций пользователей через команду ​ sudo  :
 +<​code>​
 +sudo cat /​var/​log/​auth.log | grep sudo
 +</​code>​
 +
 +==== Поиск неисправностей при помощи журналов ====
 +Как уже было сказано,​ большая часть программ комментирует свою работу в системных журналах. При этом, наибольшее значение,​ как правило,​ уделяется именно сообщениям об ошибках в работе. Поэтому,​ если вдруг вы столкнулись с необъяснимыми на первый взгляд проблемами (например,​ у вас перестала запускаться графическая подсистема X11) - вы можете изучить соответствующие log-файлы((в данном примере,​ скорее всего это будет файл Xorg.0.log)). Сложно посоветовать заранее необходимый вам log-файл,​ но из контекста неисправности зачастую понятно,​ в какую сторону нужно копать. Однозначно можно сказать,​ что большая часть различных ошибок,​ помимо специфичных log-файлов попадает в /​var/​log/​syslog,​ так что выполнение:​
 +<​code>​
 +sudo tail /​var/​log/​syslog
 +</​code>​
 +сразу после проявления неполадки скорее всего даст вам необходимые данные об ошибке.\\
 +После того, как вы найдете подозрительное сообщение,​ можете смело копировать его текст в Google, и, скорее всего, вы тут же найдете описание своей проблемы и возможные методы решения.
 +
 +===== Если система зависает =====
  
 +Если ваша система произвольно зависает,​ и анализ log-файлов не позволяет выяснить,​ в чем проблема,​ вы можете попробовать следующий способ. Откройте терминал и выполните:​
 +<​code>​
 +top -b > ~/my.log
 +</​code>​
 +После чего **не закрывайте терминал** и продолжайте работать до зависания системы. После перезагрузки откройте файл my.log в своей домашней папке - выглядеть он будет примерно так((тут приводится пример с нормальной,​ не зависшей системы)):​
 +<​file>​
 +top - 10:46:54 up 17:​36, ​ 1 user,  load average: 0.00, 0.00, 0.00
 +Tasks: ​ 59 total, ​  1 running, ​ 58 sleeping, ​  0 stopped, ​  0 zombie
 +Cpu(s): ​ 0.0%us, ​ 0.0%sy, ​ 0.0%ni,​100.0%id, ​ 0.0%wa, ​ 0.0%hi, ​ 0.0%si, ​ 0.0%st
 +Mem:    504108k total, ​   46616k used,   ​457492k free,     2588k buffers
 +Swap:   ​999032k total, ​       0k used,   ​999032k free,    14860k cached
 +  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 +    1 root      20   0 19300 1552 1132 S  0.0  0.3   ​0:​00.16 init
 +    2 root      15  -5     ​0 ​   0    0 S  0.0  0.0   ​0:​00.00 kthreadd
 +    3 root      RT  -5     ​0 ​   0    0 S  0.0  0.0   ​0:​00.00 migration/0
 +................................
 +</​file>​
 +Верхний процесс в списке процессов (в данном примере - init) - затребовал больше всех ресурсов непосредственно перед тем, как система зависла. В зависимости от того, что это был за процесс вы можете спланировать процесс дальнейшей отладки системы.
  
  
 +{{tag>​Tips Можно_улучшить}}