1 .. include:: ../disclaimer-zh_CN.rst 1 .. include:: ../disclaimer-zh_CN.rst 2 2 3 :Original: :doc:`../../../admin-guide/bug-bise 3 :Original: :doc:`../../../admin-guide/bug-bisect` 4 4 5 :译者: 5 :译者: 6 6 7 吴想成 Wu XiangCheng <bobwxc@email.cn> 7 吴想成 Wu XiangCheng <bobwxc@email.cn> 8 8 9 二分(bisect)缺陷 9 二分(bisect)缺陷 10 +++++++++++++++++++ 10 +++++++++++++++++++ 11 11 12 (英文版)最后更新:2016年10月28 12 (英文版)最后更新:2016年10月28日 13 13 14 引言 14 引言 15 ===== 15 ===== 16 16 17 始终尝试由来自kernel.org的源代码构 17 始终尝试由来自kernel.org的源代码构建的最新内核。如果您没有信心这样做,请将 18 错误报告给您的发行版供应商,而 18 错误报告给您的发行版供应商,而不是内核开发人员。 19 19 20 找到缺陷(bug)并不总是那么容易 20 找到缺陷(bug)并不总是那么容易,不过仍然得去找。如果你找不到它,不要放弃。 21 尽可能多的向相关维护人员报告您 21 尽可能多的向相关维护人员报告您发现的信息。请参阅MAINTAINERS文件以了解您所 22 关注的子系统的维护人员。 22 关注的子系统的维护人员。 23 23 24 在提交错误报告之前,请阅读“Docu 24 在提交错误报告之前,请阅读“Documentation/admin-guide/reporting-issues.rst”。 25 25 26 设备未出现(Devices not appearing) 26 设备未出现(Devices not appearing) 27 ==================================== 27 ==================================== 28 28 29 这通常是由udev/systemd引起的。在将 29 这通常是由udev/systemd引起的。在将其归咎于内核之前先检查一下。 30 30 31 查找导致缺陷的补丁 31 查找导致缺陷的补丁 32 =================== 32 =================== 33 33 34 使用 ``git`` 提供的工具可以很容易 34 使用 ``git`` 提供的工具可以很容易地找到缺陷,只要缺陷是可复现的。 35 35 36 操作步骤: 36 操作步骤: 37 37 38 - 从git源代码构建内核 38 - 从git源代码构建内核 39 - 以此开始二分 [#f1]_:: 39 - 以此开始二分 [#f1]_:: 40 40 41 $ git bisect start 41 $ git bisect start 42 42 43 - 标记损坏的变更集:: 43 - 标记损坏的变更集:: 44 44 45 $ git bisect bad [commit] 45 $ git bisect bad [commit] 46 46 47 - 标记正常工作的变更集:: 47 - 标记正常工作的变更集:: 48 48 49 $ git bisect good [commit] 49 $ git bisect good [commit] 50 50 51 - 重新构建内核并测试 51 - 重新构建内核并测试 52 - 使用以下任一与git bisect进行交互: 52 - 使用以下任一与git bisect进行交互:: 53 53 54 $ git bisect good 54 $ git bisect good 55 55 56 或:: 56 或:: 57 57 58 $ git bisect bad 58 $ git bisect bad 59 59 60 这取决于您测试的变更集上是否 60 这取决于您测试的变更集上是否有缺陷 61 - 在一些交互之后,git bisect将给出 61 - 在一些交互之后,git bisect将给出可能导致缺陷的变更集。 62 62 63 - 例如,如果您知道当前版本有问 63 - 例如,如果您知道当前版本有问题,而4.8版本是正常的,则可以执行以下操作:: 64 64 65 $ git bisect start 65 $ git bisect start 66 $ git bisect bad # Cur 66 $ git bisect bad # Current version is bad 67 $ git bisect good v4.8 67 $ git bisect good v4.8 68 68 69 69 70 .. [#f1] 您可以(可选地)在开始git 70 .. [#f1] 您可以(可选地)在开始git bisect的时候提供good或bad参数 71 ``git bisect start [BAD] [GOOD]`` 71 ``git bisect start [BAD] [GOOD]`` 72 72 73 如需进一步参考,请阅读: 73 如需进一步参考,请阅读: 74 74 75 - ``git-bisect`` 的手册页 75 - ``git-bisect`` 的手册页 76 - `Fighting regressions with git bisect(用g 76 - `Fighting regressions with git bisect(用git bisect解决回归) 77 <https://www.kernel.org/pub/software/scm/git 77 <https://www.kernel.org/pub/software/scm/git/docs/git-bisect-lk2009.html>`_ 78 - `Fully automated bisecting with "git bisect 78 - `Fully automated bisecting with "git bisect run"(使用git bisect run 79 来全自动二分) <https://lwn.net/Artic 79 来全自动二分) <https://lwn.net/Articles/317154>`_ 80 - `Using Git bisect to figure out when brokenn 80 - `Using Git bisect to figure out when brokenness was introduced 81 (使用Git二分来找出何时引入了 81 (使用Git二分来找出何时引入了错误) <http://webchick.net/node/99>`_
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.