索引
获取Trac账户
创建错误报告
软件错误
服务错误
内核错误
内核调试- KDL
系统日志
屏幕调试
硬件错误
下一步?

报告错误

由于我们的开发人员不可能测试每种硬件组合和每种不同的系统交互方式,所以我们依赖于用户,通过用户来给予我们Haiku的运行情况。由于Haiku还很年轻,您在使用时很有可能会遇到错误。我们非常感谢您能够分出时间来提交这些错误报告。我们可以共同一步一步的提高Haiku的性能。

为了确保我们的错误跟踪系统的有效性,遵守共同的错误报告规范是很有必要的。

index 获取Trac账户

为了提交任务单,您需要在Haiku的错误跟踪系统中注册一个账户。
新建账户时,您需要提供自己的电子邮箱 ,否则您将不具备基本的任务单修改权限。完成之后,您必须要保证检查您的垃圾邮箱,因为所有重要的验证邮件可能都会被发送到那里。

index 创建错误报告

在报告一个错误之前,请您确保该错误报告之前不存在。你可以使用查找功能来查找其是否存在。
在确定它是一个独特的错误之后,您需要尽可能的找出有关的详细信息:

index 程序错误

如果程序发生崩溃,您需要从弹出的警告窗口中启动调试程序。它将会打开一个运行gdb(GNUdebugger)的终端窗口。输入bt,您将会创建一个有关调试信息的“回溯”,然后您需要把它完整的复制出来(包括您输入bt命令之前终端中显示的内容),附加到错误报告中。

index 服务错误

当app server,registrar server或者input server等重要组件崩溃时,您将无法看到通常的崩溃警告。相反的,整个屏幕将会呈现白色,并且启动一个gdb会话,相关的输出信息直接在屏幕中进行显示。您可能还可以继续移动鼠标,这将会覆盖掉屏幕中的白色区域和gdb输出信息。仍在运行的程序 (例如,进程控制器或者桌面栏的时钟) 可能也会覆盖屏幕中的调试信息。
除却所有显示的丑陋和操作的不便,它与软件出错基本一样。 最重要的是获取一个有关错误的回溯(使用 bt 命令)。如果不能够拷贝相关的文本,您可能还需要使用数码相机记录下相关的屏幕显示。

index 内核错误

内核错误通常都是危害效果最大的错误,同时也是最难调试的错误。下面几种情形,通常都可能是内核或者驱动问题:

需要注意的是,只有最后这种情况与硬件相关,而所有其他的问题也可能由硬件驱动中的错误引起。如果您对引起该问题的硬件或相关的驱动有所疑问,您可以检查删除/禁用该硬件或驱动是否会产生影响。例如,如果您怀疑无线网络有问题,您会发现BIOS中有可禁用它的选项。如果其中没有该选项,您可以从安装的Haiku中删除相关的无线网络驱动(位于 /boot/system/add-ons/kernel/drivers/bin)。

index 内核调试 - KDL

如果系统没有自动的进入内核调试状态,您也可以有意识的使用 ALT SysReq D 快捷键手动进入。
需要注意的是,在内核调试状态,您的键盘可能会无法工作。PS/2键盘通常都能够正常工作;对于UHCI控制器连接的USB键盘,您至少需要使用快捷键进入内核调试状态一次,它才可用。但是对于USB OCHI,目前还未实现支持。

KDL本身是shell中的一类。它可以执行命令,打印系统信息。下面是一些感兴趣的命令:

bt (aka sc) 打印回溯信息。如果系统自主进入内核调试状态,通常需要输入该命令。
ints 显示已处理和未处理的硬件中断。
co (aka continue) 离开内核调试状态;如果可能的话,继续正常的系统操作。
reboot 立即重启系统。您将会丢失所有未保存的数据,甚至包括那些已经保存,但是还未写入硬盘的数据。

获取更多信息,请参阅 欢迎使用内核调试工具

KDL输出信息将会写入到串行端口(如果您拥有另一台与之相连接的计算机,您可以通过中断程序重定向输出信息)和系统日志。如果您无法离开KDL,它将无法写入系统日志文件。尽管如此,还有一个系统引导调试选项,允许您捕获系统信息(参阅下文)。

您可以从KDL输出中生成 QR 代码,而它们可以通过智能手机或相似设备转换为文本内容。有关如何使用该功能从 KDL 获取数据,详情参考 QR Encode your KDL Output

index 系统日志

这是从无法引导的系统中获取信息的首选方法。
系统日志(syslog,system log的缩写)中包含了关于系统问题的有用信息,包括KDL会话的输出信息 。通常将它附带到有关内核问题的报告中是个不错的主意。系统日志将会写入文件 /boot/common/var/log/syslog。由于写入文件需要系统处于运行状态,因此当内核出现问题时(尤其是,系统自动重启,或者无法持续KDL会话),最新的输出信息可能无法写入日志文件。

引导程序的Debug menu 中的Enable debug syslog 选项可以使系统日志在内存中稍微持久的存在。默认情况下,它是启用的。 “稍微持久” 意味着,它可以在一次机器重置之后仍然存在,在之后直接进入引导程序菜单时仍然可以访问。尽管如此,引导一个操作系统将会(Haiku 肯定会,其他的可能会)损坏该信息。 所以您需要在引导时按下 SHIFT 进入引导程序菜单。
在引导程序的 Debug menu 中,您可以找到 Display syslog from previous sessionSave syslog from previous session 两个入口。前者将系统日志显示于屏幕,后者允许您将其保存到硬盘。需要注意的是,目前只有FAT32卷支持保存该文件。如果您使用USB磁盘,但是插入晚了,可能它将不被识别;您可以重置机器,然后再次进入引导程序菜单。但是还要注意:不要无意的启动任何操作系统,否则数据将会丢失。

index 屏幕调试

屏幕调试输出仅对调试特殊问题有用,而且自身也有(定时)问题。若非必须,不要使用它。
只有当Haiku引导机器失败,而且 Debug syslog option 出于某些原因无法使用,它才具有重要意义。 在Haiku的引导徽标出现之前,按下 SHIFT 进入引导程序菜单。 选择 Select safe mode options。 在接近屏幕底部,[ ] Enable on screen debug output 将会列出。(注意:如果尝试启动Haiku,您可以启用另一个选项。如果Haiku只有在启用多个选项时才可以启动,您在错误报告中一定要给出这些选项。)
最后,选择 Return to main menuContinue booting
在屏幕上将会显示一页或者多页文本,只有最后几行才需要附带到您的错误报告。更多信息,参阅 引导程序

index 硬件错误

在处理有关硬件/驱动的问题时,您需要在报告中附带下面的信息:

- listdev  给出所有硬件的详细列表,包括提供商和 PCI ID;类似于Linux下的 lshwlspci
- listusb -v 假如是有关 USB 的问题,它类似于Linux下的 lsusb
- open /var/log/syslog Haiku的主要系统日志,类似于引导过程中的屏幕调试信息。您可以使用 open 命令在文本编辑器中获取到系统日志中相关的部分。
- listimage | grep drivers/  列出所有使用的驱动。
- ints 只在 内核调试状态 可用(参阅下文)。它用显示中断使用情况。不可能有许多由不同硬件共享的中断。
- 屏幕调试输出(引导时间选项的安全模式)。

前四个命令需要在终端中进行输入。在命令后添加 > output.txt ,然后输出的信息将会重定向到“output.txt”文本文件,您可以将其附带到您的错误报告或者邮件。

index

在您提交错误报告之后,开发人员将会检查您的错误,然后尝试进行修复。但是需要注意的是,我们所有的人员都是志愿者,有时候一个错误报告可能会很长时间没有人来进行回复。如果可以的话,添加新的信息将会有助于早点修复错误,但是请不要添加非描述性的评论来将“炒热”该错误。

切记,提交错误报告不是花很少时间写个报告,然后就结束了。如果您提交了一个错误,然后您就是Haiku开发过程中的一员。开发人员在解决您的错误过程中可能会遇到问题,因此请你一定要始终关注该错误,然后回答相关的问题。如果该问题没有“fixed”,你的任务就没有“done”。