1 .. SPDX-License-Identifier: GPL-2.0 1 .. SPDX-License-Identifier: GPL-2.0 2 2 3 .. include:: ../disclaimer-zh_TW.rst 3 .. include:: ../disclaimer-zh_TW.rst 4 4 5 :Original: :doc:`../../../admin-guide/bug-bise 5 :Original: :doc:`../../../admin-guide/bug-bisect` 6 6 7 :譯者: 7 :譯者: 8 8 9 吳想成 Wu XiangCheng <bobwxc@email.cn> 9 吳想成 Wu XiangCheng <bobwxc@email.cn> 10 胡皓文 Hu Haowen <2023002089@link.tyut.edu. !! 10 胡皓文 Hu Haowen <src.res@email.cn> 11 11 12 二分(bisect)缺陷 12 二分(bisect)缺陷 13 +++++++++++++++++++ 13 +++++++++++++++++++ 14 14 15 (英文版)最後更新:2016年10月28 15 (英文版)最後更新:2016年10月28日 16 16 17 引言 17 引言 18 ===== 18 ===== 19 19 20 始終嘗試由來自kernel.org的源代碼構 !! 20 始終嘗試由來自kernel.org的原始碼構建的最新內核。如果您沒有信心這樣做,請將 21 錯誤報告給您的發行版供應商,而 21 錯誤報告給您的發行版供應商,而不是內核開發人員。 22 22 23 找到缺陷(bug)並不總是那麼容易 23 找到缺陷(bug)並不總是那麼容易,不過仍然得去找。如果你找不到它,不要放棄。 24 儘可能多的向相關維護人員報告您 !! 24 儘可能多的向相關維護人員報告您發現的信息。請參閱MAINTAINERS文件以了解您所 25 關注的子系統的維護人員。 25 關注的子系統的維護人員。 26 26 27 在提交錯誤報告之前,請閱讀“Docu !! 27 在提交錯誤報告之前,請閱讀「Documentation/admin-guide/reporting-issues.rst」。 28 28 29 設備未出現(Devices not appearing) 29 設備未出現(Devices not appearing) 30 ==================================== 30 ==================================== 31 31 32 這通常是由udev/systemd引起的。在將 32 這通常是由udev/systemd引起的。在將其歸咎於內核之前先檢查一下。 33 33 34 查找導致缺陷的補丁 34 查找導致缺陷的補丁 35 =================== 35 =================== 36 36 37 使用 ``git`` 提供的工具可以很容易 37 使用 ``git`` 提供的工具可以很容易地找到缺陷,只要缺陷是可復現的。 38 38 39 操作步驟: 39 操作步驟: 40 40 41 - 從git源代碼構建內核 !! 41 - 從git原始碼構建內核 42 - 以此開始二分 [#f1]_:: 42 - 以此開始二分 [#f1]_:: 43 43 44 $ git bisect start 44 $ git bisect start 45 45 46 - 標記損壞的變更集:: 46 - 標記損壞的變更集:: 47 47 48 $ git bisect bad [commit] 48 $ git bisect bad [commit] 49 49 50 - 標記正常工作的變更集:: 50 - 標記正常工作的變更集:: 51 51 52 $ git bisect good [commit] 52 $ git bisect good [commit] 53 53 54 - 重新構建內核並測試 54 - 重新構建內核並測試 55 - 使用以下任一與git bisect進行交互: 55 - 使用以下任一與git bisect進行交互:: 56 56 57 $ git bisect good 57 $ git bisect good 58 58 59 或:: 59 或:: 60 60 61 $ git bisect bad 61 $ git bisect bad 62 62 63 這取決於您測試的變更集上是否 63 這取決於您測試的變更集上是否有缺陷 64 - 在一些交互之後,git bisect將給出 64 - 在一些交互之後,git bisect將給出可能導致缺陷的變更集。 65 65 66 - 例如,如果您知道當前版本有問 66 - 例如,如果您知道當前版本有問題,而4.8版本是正常的,則可以執行以下操作:: 67 67 68 $ git bisect start 68 $ git bisect start 69 $ git bisect bad # Cur 69 $ git bisect bad # Current version is bad 70 $ git bisect good v4.8 70 $ git bisect good v4.8 71 71 72 72 73 .. [#f1] 您可以(可選地)在開始git 73 .. [#f1] 您可以(可選地)在開始git bisect的時候提供good或bad參數 74 ``git bisect start [BAD] [GOOD]`` 74 ``git bisect start [BAD] [GOOD]`` 75 75 76 如需進一步參考,請閱讀: 76 如需進一步參考,請閱讀: 77 77 78 - ``git-bisect`` 的手冊頁 78 - ``git-bisect`` 的手冊頁 79 - `Fighting regressions with git bisect(用g !! 79 - `Fighting regressions with git bisect(用git bisect解決回歸) 80 <https://www.kernel.org/pub/software/scm/git 80 <https://www.kernel.org/pub/software/scm/git/docs/git-bisect-lk2009.html>`_ 81 - `Fully automated bisecting with "git bisect 81 - `Fully automated bisecting with "git bisect run"(使用git bisect run 82 來全自動二分) <https://lwn.net/Artic 82 來全自動二分) <https://lwn.net/Articles/317154>`_ 83 - `Using Git bisect to figure out when brokenn 83 - `Using Git bisect to figure out when brokenness was introduced 84 (使用Git二分來找出何時引入了 84 (使用Git二分來找出何時引入了錯誤) <http://webchick.net/node/99>`_ 85 85
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.