工具與調(diào)試

1.5 工具與調(diào)試

調(diào)試 Flutter 應(yīng)用

有很多工具和特性可以幫助調(diào)試 Flutter 應(yīng)用程序,如下列舉了一些:

  • 開發(fā)者工具,是一套運(yùn)行在瀏覽器的性能及分析工具。

  • Android Studio/IntelliJVS Code(借助 Flutter 和 Dart 插件)支持內(nèi)置的源代碼調(diào)試器,可以設(shè)置斷點(diǎn),單步調(diào)試,檢查數(shù)值。

  • Flutter inspector,是開發(fā)者工具提供的 widget 檢查器,也可直接在 Android Studio 和 IntelliJ 中使用(借助 Flutter 插件)。檢查器可以可視化展現(xiàn) widget 樹,查看單個 widget 及其屬性值,開啟性能圖層,等等。

開發(fā)者工具

DevTools

要調(diào)試及分析應(yīng)用,開發(fā)者工具可能是你的首選。開發(fā)者工具運(yùn)行在瀏覽器,支持以下特性:

  • 源代碼調(diào)試器

  • widget 檢查器,展示可視化的 widget 樹; “widget select” 模式,在應(yīng)用中選擇一個 widget,會在 widget 樹直接定位到它的位置。

  • 內(nèi)存分析

  • 時間線視圖,支持跟蹤,導(dǎo)入及導(dǎo)出跟蹤信息

  • 日志視圖

    logging view

如果你在 debug 模式profile 模式 運(yùn)行,那么可以在瀏覽器打開開發(fā)者工具連接到你的應(yīng)用。開發(fā)者工具不能用在以 release 模式 編譯的應(yīng)用,因為調(diào)試和分析信息都被刪除了。

如果你要用開發(fā)者工具分析應(yīng)用,需確保使用 profile 模式。否則,分析的主要輸出將會是用于驗證框架中各種不變式的調(diào)試斷言(查看 debug 模式斷言)。

想獲取更多信息,請查看 開發(fā)者工具 文檔。

設(shè)置斷點(diǎn)

要設(shè)置斷點(diǎn),可以直接在 IDE 或編輯器(比如 Android Studio/IntelliJVS Code)、開發(fā)者工具調(diào)試器 設(shè)置,或者 通過編碼的方式設(shè)置。

Dart 分析器

The Dart analyzer

如果你使用的是 Flutter 推薦的 IDE 或編輯器,則自帶的 Dart 分析器默認(rèn)會檢查代碼,并發(fā)現(xiàn)可能的錯誤。

如果你使用命令行,則可以使用 flutter analyze 檢查代碼。

Dart 分析器非常依賴你在代碼中添加的類型注解,以幫助跟蹤問題。建議您在各個地方都加上注解(避免 var,無類型參數(shù),無類型 list 字面量,等等),因為這是跟蹤問題最快且最不痛苦的方式。

日志

Logging

另一個有用的調(diào)試工具是日志。通過 編碼 配置日志,然后在開發(fā)者工具中的 日志視圖 或控制臺查看輸出。

調(diào)試應(yīng)用層

Flutter 采用分層架構(gòu),包括 widget、渲染和繪制等層。想獲取更多信息和視頻,請查看 GitHub wiki 上的 The Framework architecture,和社區(qū)文章 The Layer Cake

Flutter widget 檢查器提供了 widget 樹的視覺展現(xiàn),如果你想要更多細(xì)節(jié),或關(guān)于 wiget、層級或渲染樹的詳盡文本轉(zhuǎn)儲,請查看 添加輸出代碼的方式調(diào)試 Flutter 應(yīng)用 頁面的 調(diào)試標(biāo)志:應(yīng)用層 部分。

Debug 模式斷言

Debug mode assertions

在開發(fā)過程中,強(qiáng)烈建議您使用 Flutter 的 debug 模式。如果你是用 Android Studio 的 bug 圖標(biāo)運(yùn)行,或者在命令行執(zhí)行 flutter run,則默認(rèn)會使用 debug 模式。有些工具通過 --enable-assets 命令行標(biāo)志可以支持?jǐn)嘌哉Z句。

在此模式,Dart 斷言語句被開啟,F(xiàn)lutter 框架在執(zhí)行時會計算每一個遇到的斷言語句的參數(shù),當(dāng)結(jié)果是 false 時拋出異常。如此一來,開發(fā)者可以控制不變式檢查的開啟或關(guān)閉,相應(yīng)的性能損耗將只發(fā)生在調(diào)試期間。

有不變式被違反時,它會被報告給控制臺,并攜帶一些幫助跟蹤問題源的上下文信息。

想獲取更多信息,請查看 探索 Dart 語言 中的 [斷言][Assert] 部分。

For more information, see Assert in the Dart language tour.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容