使用调试器
如何使用 DevTools 的源代码级调试器。
入门
#DevTools 包含一个完整的源代码级调试器,支持断点、单步执行和变量检查。
当你打开调试器选项卡时,应该能看到应用程序主入口点的源代码已加载到调试器中。
若要浏览应用程序的其他源代码,请点击库(右上角)或按 Ctrl / Cmd + P。这将打开库窗口,允许你搜索其他源文件。
设置断点
#要设置断点,请点击源代码区域左侧的页边距(行号标尺)。点击一次即可设置断点,该断点也应显示在左侧的断点(Breakpoints)区域中。再次点击即可移除断点。
调用栈和变量区域
#当应用程序遇到断点时,它会在该处暂停,DevTools 调试器会在源代码区域显示暂停的执行位置。此外,调用栈(Call stack)和 变量(Variables)区域会填充当前暂停隔离区(Isolate)的调用栈以及所选框架的局部变量。在 调用栈 区域中选择其他框架会更改变量的内容。
在 变量 区域内,你可以通过展开各个对象来检查其字段。将鼠标悬停在 变量 区域的对象上,会调用该对象的 toString() 方法并显示结果。
单步调试源代码
#暂停时,三个单步执行按钮变为活动状态。
- 使用步入(Step in)进入方法调用,并在该被调用方法的第一个可执行行停止。
- 使用步过(Step over)跳过方法调用;这会单步执行当前方法中的源代码行。
- 使用步出(Step out)跳出当前方法,且不会在中间行停止。
此外,恢复(Resume)按钮会继续应用程序的常规执行。
控制台输出
#运行中应用的控制台输出(stdout 和 stderr)会显示在源代码区域下方的控制台中。你也可以在 日志视图 中查看输出。
在异常处中断
#要调整“在异常时停止”的行为,请切换调试器视图顶部的忽略(Ignore)下拉菜单。
“仅在未捕获异常时中断”(Breaking on unhandled exceptions)仅在断点被应用程序代码视为未捕获时才暂停执行。“在所有异常处中断”(Breaking on all exceptions)则无论断点是否被应用程序代码捕获,都会导致调试器暂停。
已知问题
#对 Flutter 应用程序执行热重启(Hot restart)时,用户设置的断点会被清除。
其他资源
#有关调试和性能分析的更多信息,请参阅 调试 页面。