Zgłaszanie błędów
Nasi deweloperzy nie są w stanie przetestować każdej możliwej kombinacji sprzętu ani każdego możliwego sposobu interakcji z systemem. Z tego powodu polegamy na użytkownikach, licząc na to, że dadzą nam znać jak Haiku działa na ich komputerach. Ponieważ Haiku jest projektem dość młodym, istnieje duże prawdopodobieństwo, że natkniesz się na błędy. Dziękujemy za czas poświęcony na ich zgłoszenie. Razem możemy ulepszyć Haiku, krok po kroku.
Aby ułatwić na śledzenie problemów ważne jest przestrzeganie Etykiety systemu śledzenia błędów (ang.).
Zakładanie konta Trac
Aby zgłosić problem, potrzebujesz konta w systemie śledzenia błędów Haiku.
Zakładając konto koniecznie podaj swój adres e-mail ponieważ jest on niezbędny do otrzymania podstawowych uprawinień modyfikacji zgłoszeń. Nie zapomnij sprawdzić katalogu ze spamem maile weryfikacyjne zwykle tam trafiają.
Otwieranie zgłoszenia
Przed otworzeniem zgłoszenia upewnij się, że podobne jeszcze nie istnieje. Możesz do tego użyć funkcji Szukaj.
Kiedy już ustaliłeś, że Twój problem nie został wcześniej zgłoszony, ustal informacje najdokładniej jak potrafisz:
Spróbuj spowodować problem na najnowszej wersji Haiku. Gotowe obrazy do testów dostępne są w sieci.
Załącz podstawowe informacje, takie jak na czym testujesz Haiku (na sprzęcie, w VMWare, w QEMU, itp.).
Napisz jakiej wersji używasz. Znajdziesz tę informację w oknie
dostępnym z menu Deskbara. Istotna jest także architektura systemu (x86_gcc2, x86_64). Obrazy pobrane z sieci mają odpowiednie nazwy, w przypadku systemu zbudowanego samodzielnie powinieneś wiedzieć jakiej jest architektury.Opisz problem najdokładniej jak możesz: zawrzyj nie tylko opis zachowania obserwowanego, ale też zachowania oczekiwanego.
Opisz krok po kroku jak wywołać opisane zachowanie. To pomoże deweloperom szybciej naprawić błąd.
Załącz jak najwięcej informacji. Jeśli to problem z interfejsem graficznym lub błąd w aplikacji, wykonaj zrzut ekranu klawiszem PRINT.
Błędy w aplikacjach
Kiedy aplikacja ulegnie awarii, możesz włączyć Debugger, zapisać raport lub zrzut pamięci (oba na pulpicie). Pliki dołącz do zgłoszenia.
If it's not a crashing bug, you may get useful information when starting the application from Terminal. Some applications provide logging and other options when started with certain parameters; try -h or --help to see if that is the case. As example, see the different logging levels of HaikuDepot.
Błędy w serwerach
Gdy krytyczne dla systemu serwery takie jak app server, registrar lub input server ulegają awarii, nie zobaczysz zwyczajnego okna z błędem, jak w przypadku aplikacji. Zamiast tego cały ekran zostanie wyczyszczony na biało i zostanie wystartowana tekstowa sesja Debuggera, której rezultaty pojawią się na ekranie. Prawdopodobnie nadal będziesz mieć możliwość poruszania kursorem, który nadpisze fragmenty ekranu. Wciąż działające aplikacji (takie jak ProcessController lub zegar w Deskbarze) również mogą się tak zachowywać.
Poza tym, że wszystko będzie brzydsze i mniej wygodne, obowiązują te same zasady co w przypadku błędów w aplikacjach. Co najważniejsze, uzyskaj stos wywołań (komenda bt). Może być konieczne zrobienie zdjęcia ekranu, ze względu na brak możliwości skopiowania tekstu.
W zależności od tego, co dokładnie uległo awarii, możesz spróbować zapisać raport lub zrzut pamięci na pulpicie komendami (odpowiednio) save-report i write-core, a następnie wcisnąć krótko przycisk zasilania jeden raz, aby wyłączyć komputer. Jeżeli przycisk zasilania nie działa, dostępne są również komendy shutdown i reboot.
Błędy w jądrze
Błędy w jądrze zazwyczaj sprawiają najwięcej problemów, będąc jednocześnie najtrudniejszymi do zbadania. Są różne objawy wskazujące na błąd w jądrze lub sterowniku:
System z własnej woli wchodzi do trybu badania jądra (KDL). Górna część ekranu zostaje wyczyszczona białym kolorem i wypisane zostaje kilka linii tekstu. Druga linia to „Welcome to Kernel Debugging Land...”, ponad nią znajduje się bezpośredni powód wejścia do tego trybu.
System spontanicznie się restartuje.
System kompletnie się zawiesza. Nie można ruszyć kursorem oraz żadna aplikacja nie przerysowuje ekranu. Ważnym testem w tej sytuacji jest próba wejścia do KDL skrótem ALT SysReq D (SysReq to PRINT na większości klawiatur). Poczekaj na efekt przynajmniej minutę.
System nie startuje poprawnie. Może uruchamiać się ponownie lub zatrzymywać w którymś momencie (np. na którejś z ikon na ekranie rozruchowym). W drugim przypadku również spróbuj skrótu ALT SysReq D.
Cały system lub któreś z urządzeń nie zachowuje się poprawnie. Na przykład może być bardzo powolne, powodować błędy lub w ogóle nie działać. Jeśli urządzenie nie działa, pierwszą rzeczą do sprawdzenia jest, czy Haiku ten sprzęt obsługuje (np. pytając na liście mailingowej lub forum).
Mimo że tylko ostatni symptom wskazuje na powiązanie ze sprzętem, wszystkie pozostałe objawy też mogą być spowodowane błędem w sterowniku. Jeżeli podejrzewasz jakieś konkretne urządzenie lub sterownik o powodowanie problemów, sprawdź czy wyłączenie/usunięcie ich robi różnicę. Dla przykładu, podejrzewając WiFi poszukaj w BIOS-ie opcji wyłączenia łączności bezprzewodowej. Możesz również wyłączyć ładowanie odpowiedniego sterownika (zobacz rozdział Boot Loader).
Tryb krokowy jądra (Kernel Debugging Land, KDL)
Jeżeli system nie wszedł do KDL, możesz to zrobić samodzielnie skrótem klawiszowym ALT SysReq D (SysReq to zazwyczaj Print).
Weź pod uwagę, że w KDL klawiatura może nie działać. Klawiatury PS/2 działają zawsze, klawiatury USB podłączone do kontrolera UHCI działają tylko, gdy KDL został wywołany z klawiatury przynajmniej raz. USB OHCI nie jest obecnie obsługiwane.
Sam KDL jest rodzajem powłoki. Można w nim wywoływać komendy zwracające informacje o stanie systemu. Poniższe są szczególnie przydatne:
bt (lub sc) | Prints a back trace (aka stack crawl). If the system entered KDL on its on volition, a back trace is normally printed automatically. Enter the command if that didn't happen or part of it is obscured (e.g. when the stack trace is so long that it wrapped around) and your only way of providing the information to developers is by taking a picture of the screen. | |
ints | Wypisuje obsłużone i nieobsłużone przerwania sprzętowe. | |
co (lub continue) | Opuszcza tryb badania jądra i wznawia normalną pracę systemu, o ile jest to możliwe. | |
reboot | Natychmiast restartuje system. Powoduje utratę niezapisanych danych oraz tych zapisanych, ale nie zrzuconych jeszcze na dysk. |
Więcej informacji w artykule Welcome to Kernel Debugging Land (ang.).
Wyjście KDL jest kopiowane na port szeregowy (jeśli komputer jest wyposażony w taki port, a ponadto masz odpowiedni kabel i drugi komputer, możesz je przechwycić korzystając z terminala) oraz do dziennika systemu. To ostatnie nie będzie możliwe, jeżeli nie możesz wyjść z KDL. Istnieje opcja boot loadera pozwalająca przechwycić informacje z KDL mimo tego (patrz niżej).
Możesz wygenerować kody QR z wynikiem KDL, które mogą być potem odczytane na smartfonie lub podobnym urządzeniu. Zobacz wpis QR Encode your KDL Output (ang.) na blogu, aby dowiedzieć się jak korzystać z tej możliwości.
Syslog
Jest to preferowana metoda wyciągnięcia informacji z niestartującego systemu.
Syslog (skrót od ang. system log, dziennik systemu) zawiera wartościowe informacje dotyczące tego, co działo się z systemem, włączając w to sesje KDL. Dobrą praktyką jest dołączanie tego pliku do zgłoszeń dotyczących jądra. Syslog jest zapisywany do pliku /boot/system/var/log/syslog. Ponieważ zapisywanie do pliku wymaga działającego systemu, najświeższe informacje mogą się w nim nie znaleźć, jeżeli wystąpi problem z jądrem (w szczególności przy losowych restartach lub sesjach KDL, z których nie można wyjść).
The option /boot/system/var/log/previous_syslog.
If you're not able to boot to get to the previous_syslog, you have to enter the boot loader menu by holding down SHIFT (or SPACE when booting via UEFI) while booting.
In the boot loader's you should find the entries and . The former displays the syslog on screen, the latter allows you to save it as a file to disk. Note that at the moment only FAT32 volumes are supported for saving the file. If you want to use a USB stick, but have plugged it in too late so that it isn't recognized yet, you can reset the machine and re-enter the boot loader menu. Note: Don't accidentally boot any operating system or the data will be lost.
Wypis dziennika na ekran
The on-screen debug output is useful only for debugging very specific issues and is known to have (timing) issues. Don't use it, if you don't have to.
This is only relevant when Haiku fails to boot on your machine and the option doesn't work for some reason. Before the Haiku boot logo appears, hold SHIFT (or SPACE when booting via UEFI) to enter the boot loader menu. Select . Near the bottom, will be listed. (Note: The other options could be enabled in an attempt to boot Haiku. If Haiku will boot only when one or more options are activated, be sure to mention which ones.)
Finally select and then .
One or more pages of text will display on the screen, only the last few lines need to be included on your ticket. There's more information on the Boot Loader.
Błędy sprzętowe/w sterownikach
Mając do czynienia z błędem dotyczącym sprzętu lub sterownika, do zgłoszenia powinny być załączone jako pliki wyniki następujących komend:
- listdev | Szczegółowa lista sprzętu, zawierająca identyfikatory producentów i modeli, odpowiednik linuksowych lshw i lspci. | |
- listusb -v | W przypadku problemów z USB, odpowiednik lsusb. | |
- open /var/log/syslog | Dziennik systemu opisany wyżej. Komendą open możesz przyciąć dziennik w edytorze tekstu. | |
- listimage | grep drivers/ | Sporządza listę wszystkich używanych sterowników. | |
- usb_hid_report | In case of USB input devices, add the /tmp/usb_hid_report_descriptor_*.bin file. | |
- ints | Dostępna tylko w Trybie krokowym jądra (KDL) (patrz wyżej). Wyświetla przerwania. Nie powinno być zbyt wielu współdzielonych przez różne urządzenia. | |
- On screen debug output (a debug boot time option, see above). |
Pierwsze cztery komendy należy wpisać w aplikacji Terminal. Dodając > output.txt po komendzie, można przekierować jej wynik z ekranu do pliku o nazwie „output.txt”, który później łatwo załączyć do zgłoszenia lub maila.
Co dalej?
Po zgłoszeniu błędu, jeden z deweloperów rzuci na niego okiem i spróbuje go sklasyfikować. Pamiętaj, wszyscy jesteśmy wolontariuszami, czasami zgłoszenie może pozostać przez jakiś czas bez odpowiedzi. Dołączanie nowych informacji zazwyczaj sprawia, że błąd zostanie naprawiony szybciej, ale nie należy „podbijać” zgłoszenia nieistotnymi komentarzami.
Pamiętaj też, że zgłoszenie błędu to nie jest jednorazowy wysiłek. Po otwarciu zgłoszenia stajesz się częścią procesu jego rozwiązywania. W jego trakcie deweloperzy mogą mieć pytania. Zostań w kontakcie, aby móc na nie odpowiedzieć. Możesz uznać swoje zaangażowanie za „zakończone” dopiero gdy zgłoszenie zostanie oznaczone jako „rozwiązane”.