9.2 向社区求助
获取帮助
如果您需要一份指引来了解 Xenomai 是什么,以及如何查找此项目的资源,您可能需要阅读这份面向新人的文档:https://v3.xenomai.org/overview/。
请不要为了获取帮助而向 Xenomai 维护者发送私人电子邮件,您很可能得不到任何回复。这并非针对个人。如果您打算这样做,请重新考虑:有明显的理由不这样做。请改用讨论列表。
Xenomai 讨论列表
如果您遇到 Xenomai 的问题,而故障排除指南没有涵盖,那么寻求帮助的最佳地点是 Xenomai 项目的主要电子邮件讨论列表。
多年来,许多问题已在此列表中讨论过,因此您可能首先想使用您喜欢的搜索引擎搜索列表存档,以寻找类似/相同问题的解决方案。
当向邮件列表发送求助请求时,遵循此清单将最大限度地提高您的问题得到快速准确回复的机会:
- 提供有关您的系统配置的详细信息
- 简洁准确地描述问题
- 注意错误代码
- 提供自包含的测试用例(test case)
1. 提供有关您的系统配置的详细信息
请提供关于您基础系统配置的精确 且准确 的信息。无论您运行的是单内核还是双内核配置,此类信息必须包括:
-
涉及的主处理器架构(ARM、PowerPC、x86、Blackfin 等)。在适用时提及 32/64 位变体也很重要。
-
如果您的目标系统是嵌入式平台,那么请务必提及 SoC 名称或系列。如果是定制硬件,那么提及它可能衍生自或最接近的供应商原产 SoC 会有所帮助。
-
在您的硬件上运行的 Linux 内核发行版本号,如果内核来自稳定系列,请提及子版本号(例如 v3.10.18)。
-
启动目标系统时传递给内核命令行(kernel command line)的动态启动参数。您可以通过读取
/proc/cmdline从运行中的系统检索它们。 -
显然,还有您遇到问题的 Xenomai 发行版本号。如果您直接从我们的 GIT 仓库拉取 Xenomai 代码,那么请提及分支和指向您所使用的 Xenomai 代码的 SHA1 提交号。
-
如果运行 Xenomai 3,
sbin/version命令将在从 GIT 树构建时输出 SHA1 提交号:$ /usr/xenomai/sbin/version
Xenomai/mercury v3.0-rcl -- #358901b (2014-08-05 18:19:10 +0200)
-
-
传递给配置脚本(configure script)、用于构建 Xenomai 库的配置选项(configuration knobs)。
-
要找回它们,只需进入您的构建目录,然后键入:
$ grep configure config.status
-
如果您无法访问 Xenomai 安装的构建树,但仍然足够幸运运行着 Xenomai 3,您可以通过以下命令检索此信息:
$ /usr/xenomai/bin/xeno-config --info|grep -i build
-
-
提及 Linux 发行版也可能有助于判断您的报告是否匹配过去在此类环境中已识别的典型问题。
-
如果涉及双内核配置,请务必同时提及以下信息:
- Dovetail:如果您直接从我们的 GIT 仓库拉取 Dovetail 代码,那么也请提及分支和指向您所使用的 Dovetail 代码的 SHA1 提交号。
- I-pipe: I-pipe 核心版本号,可以通过读取
/proc/ipipe/version获取。如果您直接从我们的 GIT 仓库拉取 I-pipe 代码,那么也请提及分支和指向您所使用的 I-pipe 代码的 SHA1 提交号。
在您报告问题的第一封电子邮件中就提供所有必需的系统配置信息,将最大限度地提高您的求助请求获得快速准确回复的机会。
如果您的目标系统在完全安装 Xenomai 后能正常启动,在其上运行 xeno-config --info 应该会产生前面提到的所有必需信息。
2. 简洁准确地描述问题
在描述问题时,尝试做到简洁,但不要含糊不清。因为时间对我们所有人来说都可能是稀缺资源,您能用越少的文字告诉我们更多关于问题的信息,我们理解背景所需的时间就越少,快速解决该问题的动力就越大。
通常,您肯定需要提及:
- 您在会话期间(从启动到错误显现)收到的任何内核警告(kernel warning),
- 在运行遇到问题的应用程序时,在终端上收到的任何警告、错误消息或不寻常的通知。
有时内核警告或通知可能会被忽视,特别是当系统控制台对用户不可见时。然而,通过此通道可能会获得重要信息。因此,请确保在要求时提供完整的内核日志,包括早期引导加载程序(bootloader)消息。
在嵌入式系统上,获取此类信息的典型方式是从串行控制台接收。如果串行控制台不可用,您可以使用 netconsole 通过以太网线发送控制台输出。如何在您的内核上设置 netconsole 在互联网上的多个地方有描述:
- 这是 Linux 内核文档中提供的信息:https://www.kernel.org/doc/Documentation/networking/netconsole.txt
- 这份文档专门针对 Fedora 安装:https://fedoraproject.org/wiki/Netconsole
- 另一份文档针对 Ubuntu 安装:https://wiki.ubuntu.com/Kernel/Netconsole
3. 注意错误代码
提供给应用程序的大多数 Xenomai 服务都会返回操作状态码,这在许多情况下可能会预先警告您当前的问题。您在代码中检查它们了吗?
例如,您检查了每一次调用的返回值吗?
- 线程创建服务(thread creation service)的调用?
- 对可能阻塞/休眠(blocking/sleeping)服务的调用?
- 资源分配请求(例如内存)?
4. 提供自包含的测试用例(test case)
如果您的测试涉及运行您自己编写的一段代码,请将错误(bug)简化为尽可能最简单的自包含测试用例,这将允许我们重现该问题。
附在错误报告(bug report)上的一个合理且简单的自包含测试用例,几乎总是能导致后者在维护者无底洞般的待办事项列表(TODO list)中获得高优先级。投入一小时来精心制作一个描述性的测试用例是值得的,相比于被卡住一段未定义的时间,等待一个可能不会到来的反馈。