如何有效提出 Bug
本文透過每個詳細的步驟,介紹瞭如何提供最具可操作性的 bug 報告,以更好地解決崩潰和其他不良行為。雖然每個步驟都是可選的,但它們能夠顯著提高診斷及解決問題的速度。我們希望你能夠儘可能多地反饋錯誤報告,我們由衷地感謝你對此做出的努力。
在 Github 上提出 issue
-
報告 Flutter 的崩潰或 bug, 請在 flutter/flutter 專案中提出 issue。
-
報告文件網站的問題, 請在 flutter/website 專案中提出 issue。
提供最小可復現的程式碼樣本
建立一個最小可執行的 Flutter 應用程式,復現你所面臨的問題,並且將這些程式碼貼上到 GitHub issue 中。
為了更好地除錯完成最小可復現的程式碼,我們建議你可以使用 flutter create bug
指令建立新專案,並在 main.dart
檔案中復現問題。
另外,你還可以使用 DartPad,它能夠建立和執行小型 Flutter 應用程式。
如果你復現的問題由多個程式碼檔案組成,例如,你有一個關於本地通道的問題,你可以把這些程式碼檔案完整上傳到網路,並在 issue 中附上連結地址。
提供一些 Flutter 的診斷
-
在你的專案目錄中執行
flutter doctor -v
,並將結果貼上到 GitHub issue 中:
[✓] Flutter (Channel stable, 1.22.3, on Mac OS X 10.15.7 19H2, locale en-US)
• Flutter version 1.22.3 at /Users/me/projects/flutter
• Framework revision 8874f21e79 (5 days ago), 2020-10-29 14:14:35 -0700
• Engine revision a1440ca392
• Dart version 2.10.3
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
• Android SDK at /Users/me/Library/Android/sdk
• Platform android-30, build-tools 29.0.2
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 12.2)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 12.2, Build version 12B5035g
• CocoaPods version 1.9.3
[✓] Android Studio (version 4.0)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin version 50.0.1
• Dart plugin version 193.7547
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
[✓] VS Code (version 1.50.1)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.13.2
[✓] Connected device (1 available)
• iPhone (mobile) • 00000000-0000000000000000 • ios • iOS 14.0
在詳細模式 (verbose mode) 下執行指令
當你遇到的問題與 flutter
工具相關時,你才需要遵循以下步驟。
-
所有 Flutter 指令都接受
--verbose
標誌。如果將這個指令的輸出附在 issue 上,可能有助於診斷問題。 -
將該指令的結果附在 GitHub issue 上。
提供最新的日誌
-
使用
flutter logs
指令訪問當前連線裝置的日誌。 -
如果崩潰的情況是可以復現的,請你先清除當前的日誌(Mac 上的 ⌘ + k),然後復現崩潰的情況,最後將新生成的日誌複製到 bug 報告中。
-
如果你得到了由底層框架丟擲的異常,請你提供從第一個異常開始的所有輸出內容(包括虛線之間的內容)。
提供崩潰報告
-
在 iOS 模擬器中崩潰時,會在
~/Library/Logs/DiagnosticReports/
中生成一份崩潰報告。 -
在 iOS 真機中崩潰時,會在
~/Library/Logs/CrashReporter/MobileDevice
中生成一份崩潰報告。 -
找到與崩潰相對應的報告(通常是最新的)並將其附加到 GitHub issue 上。