Vikojen ilmoittaminen
Koska kehittäjämme eivät pysty testaamaan jokaista laitteistoyhdistelmää, eikä jokaista erilaista käyttöjärjestelmän vuorovaikutusta, luotamme käyttäjien antavan meille palautetta siitä, kuinka asiat toimivat heidän laitteissaan. Koska Haiku on aika nuori, on hyvin todennäköistä, että käyttäjä kohtaa vikoja. Kiitämme siitä ajasta, jota käytät niistä ilmoittamiseen. Yhdessä voimme parantaa Haikua pala palalta.
Vianjäljityksen pitämiseksi tehokkaana on olennaista noudattaa Vianjäljitysetikettiä.
Trac-tiilin saaminen
Jos luot vikalipun, sinulla on oltava tili Haikun vikajäljittäjässä.
Luotaessa uutta tiliä muista tarjota sähköpostiosoitteesi, koska se on välttämätön lipun muokkausoikeusien saamiseksi. Tarkista varmuuden vuoksi roskapostikansiosi pian jälkeenpäin, koska kaikki tärkeät vahvistussähköpostiviestit usein päättyvät sinne.
Vikailmoituksen luominen
Varmista ennen vian ilmoittamista, että vastaavaa vikailmoitusta ei ole jo olemassa. Voit käyttää myös etsi-toimintoa tähän.
Varmista sen jälkeen kun olet esitellyt ainutlaatuisen vian, että tietosi ovat niin tarkkoja kuin mahdollista:
Yritä toistaa havaitsemasi vika nykyisessä Haikun korjausversiossa. Esirakennetut tiedostovedokset testaustarkoituksiin löytyvät täältä.
Sisällytä mukaan perustietoa siitä, kuinka testaat Haikua (todellisessa tietokoneessa, VMWare-ympäristössä, QEMU-emulaattorissa, jne.).
Mainitse, mitä SVN-korjausversiota käytät. Löydät tämän tiedon Työpöytäpalkin valikosta
. Mainitse myös, että minkälaisella rakennusjärjestelmällä (gcc2, gcc4, gcc2hybrid, gcc4hybrid) testaamasi järjestelmä on rakennettu. Ladattavat tiedostovedokset on nimetty niiden mukaan. Itse rakennetuissa tiedostovedoksissa tiedät itse, kuinka se on rakennettu.Kuvaile kokemasi pulma. Yritä olla niin tarkka kuin voit: kuvaile todellinen käyttäytyminen, ja se käyttäytyminen, jota odotit.
Kuvaile, mitä vaiheita pitää suorittaa vian paljastumiseksi. Tämä auttaa kehittäjiä toistamaan vian.
Liitä mukaan niin paljon tietoja, kuin sinulla on. Jos kyseessä on graafisen käyttöliittymän vika, tai vika yhdessä sovelluksessa, yritä tehdä näytönkaappaus painamalla PRINT SCREEN-näppäintä.
Sovellusviat
Kun sovellus kaatuu, sinun pitäisi kutsua vikajäljitintä hälytysikkunasta, joka ponnahtaa näkyviin. Tämä avaa Pääteikkunan gdb-ohjelmalla (GNU-vikajäljitin), joka käynnistyy. Kirjoittamalla bt, luot "paluujäljen". jonka sinun pitäisi kopioida kokonaisuudessaan (mukaan lukien se osa, joka tuli näkyviin, ennen kuin kirjoitit bt-komennon) ja liittää se vikalippuun.
Palvelinviat
Kun elintärkeät palvelimet, kuten app-, registrar- tai input-palvelin kaatuvat, et näe tavallista kaatumishälytystä. Sen sijaan koko näyttö muuttuu valkoiseksi tja gdb-istunto käynnistyy ja sen tuloste ilmaantuu näytölle. Todennäköisesti pystyt yhä liikuttamaan hiiren kohdistinta, mikä ylikirjoittaa valkoisen ja gdb-tulosteen näytöllä. Yhä vielä toimivat sovellukset (kuten Prosessivalvonta tai Työpöytäpalkin kello) saattavat myös kirjoittaa vikajäljitin tulosteen päälle näytölle.
Paitsi että kaikki on rumempaa ja epämukavampaa, sama koskee myös sovellusvikoja. Tärkeintä on hankkia paluujälki (bt-komento). Sinun on ehkä otettava valokuva näytöstä digitaalikameralla, koska et voi kopioida tekstiä mihinkään.
Käyttöjärjestelmäydinviat
Käyttöjärjestelmäydinviat ovat tavallisesti vaikutuksiltaan vakavimmat ja samanaikaisesti niiden vikajäljittäminen on vaikeinta. Käyttöjärjestelmäytimeen tai ajuriin osoittavat selvimmin seuraavat oireet:
Järjestelmä siirtyy Käyttöjärjestelmän vianjäljitysmaahan (KDL) omasta tahdostaan. Näytön ylempi osa muuttuu valkoiseksi ja sille tulostetaan useita rivejä tekstiä. Toinen rivi sanoo "Welcome to Kernel Debugging Land...". Sen yläpuolella oleva rivi kertoo välittömän syyn siirtymisestä KDL:ään.
Järjestelmä alkulatautuu itsestään.
Järjestelmä jäätyy täysin. Et voi siirtää hiiren osoitinta ja mikään sovellus ei enää toimi. Tärkeä testi siinä tilanteessa on, että pystytkö siirtymään KDL:ään pikanäppäimellä ALT SysReq D (SysReq mikä on PRINT useimmissa näppäimistöissä). Odota vähintään minuutti nähdeksesi, että tapahtuuko jotain.
Järjestelmä ei alkulataa oikein. Se voi alkulatautua itsestään tai pysähtyä jossain vaiheessa (esimerkiksi jonkun alkaulatausnäytön kuvakkeen kohdalla). Yritä jälkimmäisessä tapauksessa myös ALT SysReq D.
The whole system or some piece of hardware doesn't behave correctly. For example, it could be very slow, errors occur, or something doesn't work at all. If some hardware doesn't work at all, the first obvious check is whether Haiku supports it at all at the moment (e.g. ask on a mailing list or a forum).
Note that while only the last point seems to indicate hardware relation, all the other symptoms could be caused by a bug in a hardware driver as well. If you have a suspicion what piece of hardware or corresponding driver might have to do with the problem, check whether removing/disabling the hardware or the driver makes a difference. For example, if you suspect Wifi you may find that your BIOS has an option to disable it. Or if not, you could remove the responsible Wifi driver from your Haiku installation (in /boot/system/add-ons/kernel/drivers/bin).
Kernel Debugging Land - KDL
If the system hasn't entered KDL by itself, you can do that intentionally by invoking the keyboard shortcut ALT SysReq D.
Note that in KDL your keyboard may not work. PS/2 keyboards always do, USB keyboards connected via UHCI controllers do only, if one has entered KDL via the keyboard shortcut at least once. USB OHCI is not supported at the moment.
KDL itself is a kind of a shell. One can execute commands that print information about the system. The following commands might be of interest:
bt (eli sc) | Prints a back trace. If the system entered KDL on its on volition, always enter that one. | |
ints | Shows the handled and unhandled hardware interrupts. | |
co (eli jatka) | Leaves the kernel debugger and continues normal operation of the system, if that is possible. | |
reboot | Reboots the system immediately. You will lose all unsaved data and even those that have been saved, but have not yet been written back to disk. |
For more information, see the article Welcome to Kernel Debugging Land.
The KDL output is written to the serial port (if you have one, a respective cable, and a second computer to connect with, you can capture the output there via a terminal program) and to the syslog. If you can't leave KDL it won't be written to the syslog file, though. There's a boot loader debug option that allows you to capture it nonetheless (see below).
You can generate QR codes from KDL output that can then be converted to text using smartphones or similar devices. See the blog post QR Encode your KDL Output on how to get data out of KDL using that feature.
Syslog
This is the preferred method for gaining information from a non-booting system.
The syslog (short for system log) contains valuable information about what has happened in your system, including the output of KDL sessions. It's usually a good idea to attach it to the kernel related Trac ticket. The syslog is written to the file /boot/common/var/log/syslog. Since writing to a file requires a working system, the most recent output might not have made it to the syslog when a kernel problem occurs (particularly on spontaneous reboots or uncontinuable KDL sessions).
The option SHIFT while booting.
In the boot loader's you should now 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. But again: Don't accidentally boot any operating system or the data will be lost.
On screen debug output
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 doesn't work for some reason. Before the Haiku boot logo appears, hold SHIFT 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.
Laitteisto/ajuriviat
When dealing with a hardware/driver related bug, you should attach the following information as text files:
- listdev | A detailed listing of your hardware, including vendor and pci id's, similar to Linux' lshw and lspci. | |
- listusb -v | Assuming its a USB related issue, similar to lsusb. | |
- open /var/log/syslog | The primary system log used by Haiku, akin to on screen debugging during boot. With the open command you can crop down the relevant part of the syslog in a text editor. | |
- listimage | grep drivers/ | Lists all used drivers. | |
- ints | Only available within Kernel Debugging Land (see above). Shows interrupt usage. There shouldn't be too many that are shared by different devices. | |
- On screen debug output (a safe mode boot time option). |
The first four commands are entered into Terminal. Add a > output.txt after a command, and it's piped into a text file called "output.txt" that you can attach to your bug report or email.
Mitä seuraavaksi?
After the bug has been reported, a developer will look at your bug and try to classify it. Remember, we are all volunteers, and as such, sometimes a bug report might go unanswered for a while. Adding new information when it becomes available usually helps getting a bug picked up quicker, but do not try to 'bump' the bug up by adding non-descriptive comments.
Remember, reporting a bug is not something you spend a little time on and then you are done. If you reported a bug, then you are part of the Haiku development process. Developers might come up with questions while they are trying to fix your bug. Please stay around to answer these. Consider your participation 'done' when the bug is marked as 'fixed'.