Зміст
Створення облікового запису у системі Trac
Створення звіту про помилку
Помилки у програмах
Помилки у серверах
Помилки в ядрі
Kernel Debugging Land – KDL
Системний журнал
Виведення відладочної інформації на екран
Помилки в апаратному забезпеченні/драйверах
І що далі?

Звіти про помилки

Оскільки наші розробники не можуть протестувати усі комбінації апаратного забезпечення або кожен спосіб взаємодії з операційною системою, ми покладаємося на користувачів, які можуть надати нам інформацію про те, як система працює на їхньому комп'ютері. Зважаючи на те, що Haiku все ще досить молода, дуже ймовірно, що Ви зіткнетеся з помилками. Ми дякуємо Вам за те, що Ви знайдете час, щоб повідомити про них. Разом ми можемо покращити Haiku, крок за кроком.

Щоб наш багтрекер був ефективним, важливо дотримуватися Етикету (соціальних правил) багтрекера.

index Створення облікового запису у системі Trac

Щоб подати тікет, Вам потрібно мати обліковий запис у системі відстеження помилок Haiku.
Створюючи новий обліковий запис, не забудьте вказати свою електронну адресу, оскільки вона необхідна для отримання базових привілеїв на модифікацію тікета. Одразу після цього, не забудьте перевірити папку «Спам», оскільки всі важливі листи з підтвердженням часто потрапляють туди.

index Створення звіту про помилку

Перш ніж створити звіт про помилку, будь ласка, переконайтеся, що такий тікет ще не виставлений. Для цього Ви можете скористатися функцією пошуку.
Після того, як Ви переконалися, що це унікальна помилка, зробіть свою інформацію якомога точнішою:

index Помилки у програмах

Після аварійного завершення програми Ви можете зберегти звіт про помилку чи записати дамп ядра (обидва зберігаються на Робочому столі), який можна прикріпити при поданні тікета, або викликати Debugger.

Якщо це не збій, Ви можете отримати корисну інформацію під час запуску програми з терміналу. Деякі програми передбачають ведення журналу та інші можливості під час запуску з певними параметрами; спробуйте скористатися командами -h або --help, щоб дізнатися, чи це так. Як приклад, перегляньте різні рівні журналювання у HaikuDepot.

index Помилки у серверах

Коли життєво важливі сервери такі як app server, registrar або input server виходять з ладу, Ви не побачите звичного сповіщення про збій. Замість цього весь екран стане білим, відладчик буде запущено у текстовому режимі і його вивід з'явиться безпосередньо на екрані. Скоріш за все, Ви все ще зможете рухати мишею, курсор якої перезапише білий екран і вивід відладчика на екран. Програми, які все ще працюють (наприклад, ProcessController або годинник на панелі задач), також можуть перекривати вивід відладчика на екрані.
Окрім того, що все виглядає більш жахливо і незручно, в основному все те ж саме, що і для помилок у програмі. Найважливіше – зробити зворотне трасування (командою bt). Можливо, Вам доведеться сфотографувати екран цифровою камерою, оскільки скопіювати текст нікуди не вдасться.
Залежно від того, що саме вийшло з ладу, Ви можете спробувати зберегти звіт про помилку на робочому столі за допомогою команди save-report або write-core для дампа ядра, а потім натиснути кнопку живлення один раз, щоб спробувати вимкнути систему повністю. Якщо кнопка живлення не спрацювала, є також команди shutdown і reboot.

index Помилки в ядрі

Помилки в ядрі зазвичай мають найсерйозніші наслідки і в той же час їх найважче виправляти. Існують різні типи симптомів, які, найімовірніше, вказують на проблему в ядрі або драйверах:

Зверніть увагу, що хоча лише останній пункт вказує на апаратну частину, усі інші симптоми можуть бути спричинені помилкою в драйвері обладнання. Якщо у Вас є підозра, що апаратне забезпечення або відповідний драйвер можуть бути пов'язані з проблемою, перевірте, як вплинуло на ситуацію вилучення/вимкнення пристрою або драйвера. Наприклад, якщо Ви підозрюєте Wifi, Ви можете виявити, що у BIOS є можливість вимкнути його. Якщо ні, Ви можете додати відповідний драйвер Wifi до чорного списку встановленої системи Haiku (дивіться розділ Boot Loader).

index Kernel Debugging Land – KDL

Якщо система не увійшла у режим KDL самостійно, Ви можете зробити це примусово за допомогою комбінації клавіш ALT SysReq D (SysReq – це PRINT на більшості клавіатур).
Зауважте, що у режимі KDL Ваша клавіатура може не працювати. Клавіатури PS/2 завжди працюють, у випадку з USB-клавіатурами це залежить від типу USB-контролера (UHCI/EHCI). Як правило, клавіатуру слід підключати до порту безпосередньо, а не через хаб. За певних обставин клавіатура може працювати, лише якщо Ви хоча б один раз перейшли у режим KDL за допомогою комбінації клавіш. USB OHCI наразі не підтримується.

Сама KDL є свого роду оболонкою. Можна виконувати команди, які надають інформацію про систему. Можуть бути цікавими наступні команди :

bt (або sc) виводить на екран зворотнє трасування (також відоме як перегляд стека). Якщо система увійшла у режим KDL за власним бажанням, зворотне трасування зазвичай виводиться автоматично. Введіть цю команду, якщо цього не сталося або частину трасування не видно (наприклад, якщо трасування стека настільки довге, що воно прокручує екран) і єдиний спосіб надати інформацію розробникам – це зробити знімок екрана.
ints показує оброблені та необроблені апаратні переривання.
co (або continue) виходить з відладчика ядра і продовжує нормальну роботу системи, якщо це можливо.
reboot відразу перезагружає систему. Будуть втрачені усі незбережені дані і навіть ті, які були збережені, але ще не були записані на диск.

Докладнішу інформацію наведено у статті Welcome to Kernel Debugging Land.

Вивід KDL записується у послідовний порт (якщо у Вас є послідовний порт, відповідний кабель і другий комп'ютер для підключення, Ви можете перехопити вихідні дані за допомогою програми-терміналу) і у файл системного журналу (syslog). Якщо Ви не можете вийти з KDL, дані не будуть записані у файл syslog. Існує опція секції відладки загружчика, яка дозволяє перехоплювати вивод (дивіться нижче).

Ви можете генерувати QR-коди з вихідних даних KDL, які потім можна перетворити на текст за допомогою смартфонів або подібних пристроїв. Про те, як отримати дані з KDL за допомогою цієї функції, дивіться статтю QR Encode your KDL Output.

index Системний журнал (Syslog)

Це найкращий спосіб отримати інформацію з системи, яка не загружається.
Syslog (скорочення від system log – системний журнал) містить цінну інформацію про те, що сталося у Вашій системі, зокрема виведення відладочної інформації сеансів KDL. Зазвичай рекомендується долучати його до пов'язаного з ядром тікета системи Trac. Системний журнал записується у файл /boot/system/var/log/syslog. Оскільки для запису у файл потрібна робоча система, при виникненні проблем ядра (зокрема, під час спонтанних перезагрузок або перериванні сеансів KDL), крайній вивід міг не потрапити до системного журналу.

Опція Enable debug syslog меню Select debug options загружчика вмикає запис системного журналу на постійній основі. Якщо у параметрах відладки загружчика увімкнено опцію Save syslog from previous session during boot (увімкнена за замовчуванням), системний журнал Вашого останнього сеансу запишеться як файл /boot/system/var/log/previous_syslog.
Якщо Ви не можете загрузитися, щоб отримати доступ до «previous_syslog», Вам потрібно увійти у меню загружчика, утримуючи клавішу SHIFT під час загрузки (або SPACE для загрузки через UEFI).
У меню Select debug options загружчика Ви знайдете опції Display syslog from previous session і Save syslog from previous session. Перша опція виводить syslog на екран, друга дозволяє зберегти його у вигляді файлу на диск. Зверніть увагу, що на даний момент для збереження файлу підтримуються лише томи FAT32. Якщо Ви хочете використати USB-накопичувач, але підключили його занадто пізно і він ще не розпізнаний, Ви можете перезагрузити комп'ютер і знову увійти до меню загружчика. Примітка: Не загрузіть випадково будь-яку іншу операційну систему, інакше дані буде втрачено.

index Виведення відладочної інформації на екран

Виведення відладочної інформації на екран корисне лише для виправлення дуже специфічних проблем і, як відомо, має проблеми з синхронізацією. Не використовуйте його без необхідності.
Це стосується лише тих випадків, коли Haiku не вдається загрузитися на Вашому комп'ютері, а опція Enable debug syslog з якихось причин не спрацьовує. Перш ніж з'явиться логотип завантаження Haiku, утримуйте клавішу SHIFT (або SPACE для загрузки через UEFI), щоб увійти у меню загружчика. Далі, зайдіть у меню Select debug options. Там Ви знайдете опцію Enable on screen debug output. (Примітка: Під час спроби загрузки Haiku можуть бути увімкнені інші опції. Якщо Haiku загружається лише після увімкнення одної або кількох опції, обов'язково вкажіть їх).
Нарешті, виберіть Return to main menu, а потім Continue booting.
На екрані з'явиться одна або кілька сторінок тексту, лише останні кілька рядків потрібно включити у Ваш тікет. Більше інформації про загружчик можна знайти у розділі Boot Loader.

index Помилки в апаратному забезпеченні/драйверах

Якщо Ви маєте справу з помилкою, пов'язаною з апаратним забезпеченням/драйвером, Вам слід прикріпити до тікета наступну інформацію у вигляді текстових файлів:

listdev детальний список Вашого обладнання, включно з ідентифікаторами виробника та pci, подібно до команд lshw та lspci у Linux.
listusb -v детальна інформація по USB, припускаємо, що проблема може бути пов'язана з USB, команда аналогічна lsusb.
open /var/log/syslog основний системний журнал, який використовує Haiku, дивіться вище Системний журнал, який схожий на екранний вивід відладчика під час завантаження. За допомогою команди open Ви можете вирізати відповідну частину системного журналу у текстовому редакторі.
listimage | grep drivers/ список усіх використаних драйверів.
usb_hid_report у разі використання USB-пристроїв додайте файл /tmp/usb_hid_report_descriptor_*.bin.
ints Доступно лише у режимі Kernel Debugging Land (дивіться вище). Показує використання переривань. Не повинно бути занадто багато переривань, які спільно використовуються різними пристроями.
– Вивід відладочної інформації на екран (опція меню вибору параметрів відладки загружчика, дивіться вище).

Перші чотири команди вводяться у терміналі. Додайте « > output.txt» після команди і вона буде збережена у текстовому файлі з назвою «output.txt», який Ви можете прикріпити до Вашого звіту про помилку або електронного листа.

index

Після створення звіту про помилку розробник розгляне її та спробує класифікувати. Пам’ятайте, що ми всі волонтери і тому інколи звіт про помилку може деякий час залишатися без відповіді. Додавання нової інформації до звіту, коли вона стає доступною, зазвичай допомагає швидше виправити помилку, але не намагайтеся «підняти» звіт додаванням неінформативних коментарів.

Пам’ятайте, що створення звіту про помилку – це не те, на що Ви витратите трохи часу і цим усе закінчиться. Якщо Ви створюєте звіт про помилку, Ви берете участь у процесі розробки Haiku. У розробників можуть виникнути запитання, коли вони намагаються виправити помилку. Будь ласка, залишайтеся на зв'язку, щоб відповісти на них. Вважайте свою участь «завершеною», коли помилка буде позначена як «виправлена» а звіт про помилку закритий.