跳到主内容

使用调试器

如何使用 DevTools 的源代码级调试器。

入门

#

DevTools 包含一个完整的源代码级调试器,支持断点、单步执行和变量检查。

当你打开调试器选项卡时,应该能看到应用程序主入口点的源代码已加载到调试器中。

若要浏览应用程序的其他源代码,请点击(右上角)或按 Ctrl / Cmd + P。这将打开库窗口,允许你搜索其他源文件。

Screenshot of the debugger tab

设置断点

#

要设置断点,请点击源代码区域左侧的页边距(行号标尺)。点击一次即可设置断点,该断点也应显示在左侧的断点(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)时,用户设置的断点会被清除。

其他资源

#

有关调试和性能分析的更多信息,请参阅 调试 页面。