<p>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.</p>
<p>Aby ułatwić na śledzenie problemów ważne jest przestrzeganie <ahref="http://dev.haiku-os.org/wiki/BugTrackerEtiquette">Etykiety systemu śledzenia błędów</a> (ang.).</p>
<p>Aby zgłosić problem, potrzebujesz konta w <ahref="http://dev.haiku-os.org/register"title="Register at Haiku's Bugtracker">systemie śledzenia błędów Haiku</a>.<br/>
Zakładając konto koniecznie <b>podaj swój adres e-mail</b> ponieważ jest on niezbędny do otrzymania podstawowych uprawinień modyfikacji zgłoszeń. Nie zapomnij <b>sprawdzić katalogu ze spamem</b> maile weryfikacyjne zwykle tam trafiają.</p>
<p>Przed otworzeniem zgłoszenia <ahref="http://dev.haiku-os.org/query?status=new&status=assigned&status=reopened&status=closed&summary=%7Etext+you+want+to+search+for&order=priority">upewnij się</a>, że podobne jeszcze nie istnieje. Możesz do tego użyć funkcji <ahref="http://dev.haiku-os.org/search?q=&noquickjump=1&ticket=on">Szukaj</a>.<br/>
Kiedy już ustaliłeś, że Twój problem nie został wcześniej zgłoszony, ustal informacje najdokładniej jak potrafisz:</p>
<li><p>Spróbuj spowodować problem na najnowszej wersji Haiku. Gotowe obrazy do testów<ahref="http://download.haiku-os.org">dostępne</a> są w sieci.</p></li>
<li><p>Załącz podstawowe informacje, takie jak na czym testujesz Haiku (na sprzęcie, w VMWare, w QEMU, itp.).</p></li>
<li><p>Napisz jakiej wersji używasz. Znajdziesz tę informację w oknie <spanclass="menu">O Haiku...</span> 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.</p></li>
<li><p>Opisz problem najdokładniej jak możesz: zawrzyj nie tylko opis zachowania obserwowanego, ale też zachowania oczekiwanego.</p></li>
<li><p>Opisz krok po kroku jak wywołać opisane zachowanie. To pomoże deweloperom szybciej naprawić błąd.</p></li>
<li><p>Załącz jak najwięcej informacji. Jeśli to problem z interfejsem graficznym lub błąd w aplikacji, wykonaj zrzut ekranu klawiszem <spanclass="key">PRINT</span>.</p></li>
<p>Kiedy aplikacja ulegnie awarii, możesz włączyć <ahref="../../userguide/pl/applications/debugger.html">Debugger</a>, zapisać raport lub zrzut pamięci (oba na pulpicie). Pliki dołącz do zgłoszenia.</p>
<aid="server"name="server">Błędy w serwerach</a></h2>
<p>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ć.<br/>
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 <spanclass="cli">bt</span>). Może być konieczne zrobienie zdjęcia ekranu, ze względu na brak możliwości skopiowania tekstu.<br/>
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) <spanclass="cli">save-report</span> i <spanclass="cli">write-core</span>, 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 <spanclass="cli">shutdown</span> i <spanclass="cli">reboot</span>.</p>
<aid="kernel"name="kernel">Błędy w jądrze</a></h2>
<p>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:</p>
<li><p>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 „<i>Welcome to Kernel Debugging Land...</i>”, ponad nią znajduje się bezpośredni powód wejścia do tego trybu.</p></li>
<li><p>System spontanicznie się restartuje.</p></li>
<li><p>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 <spanclass="key">ALT</span><spanclass="key">SysReq</span><spanclass="key">D</span> (<spanclass="key">SysReq</span> to <spanclass="key">PRINT</span> na większości klawiatur). Poczekaj na efekt przynajmniej minutę.</p></li>
<li><p>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 <spanclass="key">ALT</span><spanclass="key">SysReq</span><spanclass="key">D</span>.</p></li>
<li><p>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).</p></li>
<p>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ł <ahref="../../userguide/pl/bootloader.html">Boot Loader</a>).</p>
<p>Jeżeli system nie wszedł do KDL, możesz to zrobić samodzielnie skrótem klawiszowym <spanclass="key">ALT</span><spanclass="key">SysReq</span><spanclass="key">D</span> (<spanclass="key">SysReq</span> to zazwyczaj <spanclass="key">Print</span>).<br/>
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.</p>
<p>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:</p>
<tr><td><spanclass="cli">bt</span> (lub <spanclass="cli">sc</span>)</td><td></td><td>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.</td></tr>
<tr><td><spanclass="cli">ints</span></td><td></td><td>Wypisuje obsłużone i nieobsłużone przerwania sprzętowe.</td></tr>
<tr><tdclass="onelinetop"><spanclass="cli">co</span> (lub continue)</td><td></td><td>Opuszcza tryb badania jądra i wznawia normalnąpracę systemu, o ile jest to możliwe.</td></tr>
<tr><td><spanclass="cli">reboot</span></td><td></td><td>Natychmiast restartuje system. Powoduje utratę niezapisanych danych oraz tych zapisanych, ale nie zrzuconych jeszcze na dysk.</td></tr>
<p>Więcej informacji w artykule <ahref="http://www.haiku-os.org/documents/dev/welcome_to_kernel_debugging_land">Welcome to Kernel Debugging Land</a> (ang.).</p>
<p>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).</p>
<p>Możesz wygenerować kody QR z wynikiem KDL, które mogą być potem odczytane na smartfonie lub podobnym urządzeniu. Zobacz wpis <ahref="http://www.haiku-os.org/blog/mmlr/2012-07-01_qr_encode_your_kdl_output">QR Encode your KDL Output</a> (ang.) na blogu, aby dowiedzieć się jak korzystać z tej możliwości.</p>
<p><b>Jest to preferowana metoda wyciągnięcia informacji z niestartującego systemu.</b><br/>
Syslog (skrót od ang. <i>system log</i>, 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 <spanclass="path">/boot/system/var/log/syslog</span>. 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ść).</p>
<p>Opcja <spanclass="menu">Enable debug syslog</span> w menu bootloadera <spanclass="menu">Debug menu</span> sprawia,że syslog jest zrzucany bezpośrednio do pliku. Jeżeli opcja <spanclass="menu">Save syslog from previous session during boot</span> jest aktywowana (a domyślnie jest), syslog z poprzedniej sesji znajdziesz w pliku <spanclass="path">/boot/system/var/log/previous_syslog</span>.<br/>
W przypadku niestartującego systemu, aby dostać się do poprzedniego syslogu wciśnij klawisz <spanclass="key">SHIFT</span> podczas rozruchu.<br/>
W <spanclass="menu">Debug menu</span> bootloadera znajdziesz pozycje <spanclass="menu">Display syslog from previous session</span> oraz <spanclass="menu">Save syslog from previous session</span>. 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.</p>
<aid="onscreen"name="onscreen">Wypis dziennika na ekran</a></h3>
<p><b>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.</b><br/>
Poniższe informacje mają zastosowanie tylko jeśli Haiku nie uruchamia się i opcja <spanclass="menu">Debug syslog</span> z jakiejś przyczyny nie działa. Podczas rozruchu, zanim pojawi się logo Haiku, przytrzymaj <spanclass="key">SHIFT</span>, aby otworzyć menu bootloadera. Wybierz <spanclass="menu">Select safe mode options</span>. Na dole pojawi sięopcja <spanclass="menu">[ ] Enable on screen debug output</span>. (Uwaga: inne opcje także mogą być zaznaczone. Jeśli Haiku uruchamia się tylko z określonymi kombinacjami, opisz je w zgłoszeniu).<br/>
Na koniec wybierz <spanclass="menu">Return to main menu</span>, a następnie <spanclass="menu">Continue booting</span>.<br/>
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 <ahref="../../userguide/pl/bootloader.html">Boot Loader</a>.</p>
<tr><td>- <spanclass="cli">listdev</span></td><td></td><td>Szczegółowa lista sprzętu, zawierająca identyfikatory producentów i modeli, odpowiednik linuksowych <spanclass="cli">lshw</span> i <spanclass="cli">lspci</span>.</td></tr>
<tr><td>- <spanclass="cli">listusb -v</span></td><td></td><td>W przypadku problemów z USB, odpowiednik <spanclass="cli">lsusb</span>.</td></tr>
<tr><td>- <spanclass="cli">open /var/log/syslog</span></td><td></td><td>Dziennik systemu opisany <ahref="#syslog">wyżej</a>. Komendą <spanclass="cli">open</span> możesz przyciąć dziennik w edytorze tekstu.</td></tr>
<tr><tdclass="onelinetop">- <spanclass="cli">listimage | grep drivers/</span></td><td></td><td>Sporządza listę wszystkich używanych sterowników.</td></tr>
<tr><td>- <spanclass="cli">usb_hid_report</span></td><td></td><td>In case of USB input devices, add the <spanclass="cli">/tmp/usb_hid_report_descriptor_*.bin</span> file.</td></tr>
<tr><td>- <spanclass="cli">ints</span></td><td></td><td>Dostępna tylko w <i>Trybie krokowym jądra (KDL)</i> (patrz wyżej). Wyświetla przerwania. Nie powinno być zbyt wielu współdzielonych przez różne urządzenia.</td></tr>
<tr><tdcolspan="3">- Wypis dziennika na ekran (opcja ustawiana podczas rozruchu, zobacz <ahref="#onscreen">wyżej</a>).</td></tr>
<p>Pierwsze cztery komendy należy wpisać w aplikacji Terminal. Dodając <spanclass="cli">> output.txt</span> 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.</p>
<p>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.</p>
<p>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”.</p>