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ść).
Opcja /boot/system/var/log/previous_syslog.
W przypadku niestartującego systemu, aby dostać się do poprzedniego syslogu wciśnij klawisz SHIFT podczas rozruchu.
W bootloadera znajdziesz pozycje oraz . Pierwsza z nich wyświetla syslog na ekranie, druga pozwala zapisać dziennik do pliku. Obecnie tylko partycje FAT32 są obsługiwane. Jeśli chcesz użyć dysku USB, ale został podłączony za późno i przez to nierozpoznany, uruchom komputer ponownie i jeszcze raz wejdź do menu. Uwaga: przypadkowe uruchomienie systemu spowoduje utratę danych z dziennika.
Wypis dziennika na ekran
Ta opcja jest przydatna do badania tylko ściśle określonych przypadków i wiadomo, że są z nią problemy. Nie używaj jej, o ile nie musisz.
Poniższe informacje mają zastosowanie tylko jeśli Haiku nie uruchamia się i opcja z jakiejś przyczyny nie działa. Podczas rozruchu, zanim pojawi się logo Haiku, przytrzymaj SHIFT, aby otworzyć menu bootloadera. Wybierz . Na dole pojawi się opcja . (Uwaga: inne opcje także mogą być zaznaczone. Jeśli Haiku uruchamia się tylko z określonymi kombinacjami, opisz je w zgłoszeniu).
Na koniec wybierz , a następnie .
Kilka stron tekstu zostanie wyświetlone na ekranie, ale tylko kilka ostatnich linii powinno być dołączone do zgłoszenia. Więcej informacji o rozruchu systemu jest w rozdziale 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. | |
- Wypis dziennika na ekran (opcja ustawiana podczas rozruchu, zobacz wyżej). |
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”.