使用 Sources 面板来调试 JavaScript。在开始调试之前,你可以先了解 Lynx 的 JavaScript 运行环境。
启用 DevTool 后,后台线程默认使用 PrimJS 引擎来进行调试。在 Android 端,你也可以切换到 V8 引擎来获得更完整的调试体验。
打开 DevTool 开关页面,将“V8 引擎”切换为“On”并重启应用,即可在后台线程使用 V8 引擎。你可以在预览窗口的左下角查看当前的引擎类型。
Sources 面板主要分为以下三个区域:
可以使用文件导航窗格或 Open file 功能来打开感兴趣的文件。
可以在这里输入文件 URL,或在下拉列表中选择文件。
代码编辑窗格的底部操作栏中会显示当前鼠标位置的行列号。
可以通过以下方式来关闭文件:
当你想快速定位当前代码编辑窗格中展示的文件在文件导航窗格中的位置时,可以按照下列步骤操作:
当你想快速查找代码段所属的文件时,可以按照下列步骤操作:
你也可以:
通过添加断点,你可以在代码执行过程中暂停,并且能够检查这个时刻的所有相关值。
目前支持的断点类型如下:
类型 | 描述 |
---|---|
代码行 | 在确切的代码区域中暂停 |
条件 代码行 | 在确切的代码区域中暂停,但仅当某些条件为真时 |
日志代码行 | 将消息记录到 Console ,而不会暂停执行 |
首行 | 在首个被执行的 JavaScript 文件的首行暂停 |
异常 | 在引发异常的代码行暂停 |
请参考代码中的代码行断点 | Chrome DevTools。
右键单击断点图标,或使用 Breakpoints 窗格来管理代码行断点。
右键单击断点标记,选择 Edit breakpoint,可以进行进行修改,也可以从编辑对话框的下拉列表中更改其类型。
再次单击断点标记,可以删除该断点。
在 Breakpoints 窗格中,点击断点条目旁边的复选框以启用或停用该断点。停用断点后,行号旁的标记会变为透明。
右键单击断点标记,可以查看功能选项菜单:
右键单击 Breakpoints 窗格中的断点条目,可以查看功能选项菜单:
请参考使用“一律不在此处暂停”跳过断点 | Chrome DevTools。
开启首行断点,可以在每个被执行的 JavaScript 文件的入口处暂停。
鼠标悬停在下图位置,然后开启 First-Line Breakpoints。这是一个非持久化的全局开关,开启后在一次 APP 运行过程中对所有页面生效,关闭 APP 并重新打开后,开关状态会失效。
通过以下两种方式来调试首行断点:
当你想在引发异常的代码行上暂停时,可以使用异常断点。
目前 PrimJS 引擎不区分是否为捕获的异常,所有异常都会暂停。V8 引擎会区分是否为捕获的异常。
默认情况下,只可调试后台线程,如果需要调试主线程,请参考下文调试主线程 JavaScript 代码。
一旦你的代码暂停,可以一次一行地单步执行,并在此过程中查看控制流和属性值。
请参考运行某一行代码之前的所有代码 | Chrome DevTools。
要在暂停后停止继续执行 JavaScript,请长按 Resume 按钮,然后选择 Terminate script execution 按钮。
例如,本例中,选择 Terminate script execution,则程序停止执行,即 add
函数中的代码都不会被执行,可以看到 count
的值不会发生变化。
请参考查看和修改局部、闭包和全局属性 | Chrome DevTools。
当程序暂停在代码行上时,可以使用 Call Stack 窗格查看此刻的调用堆栈。
单击窗格中的条目可跳转到调用该函数的代码行,蓝色箭头图标指出了当前正在高亮的代码。
右键单击 Call Stack 窗格中的任意位置,然后选择 Copy stack trace,则能够将当前调用堆栈复制到剪贴板。
例如,本例中,复制的堆栈如下:
在调试时忽略某些脚本以跳过它。忽略时,脚本在 Call stack 窗格中会隐藏,当你单步执行代码时,永远不会进入被忽略的脚本的函数。
请参考从“编辑器”窗格中忽略脚本 | Chrome DevTools。