【问题标题】:Launch Chrome with JS scripts suspended at startup在启动时暂停 JS 脚本启动 Chrome
【发布时间】:2016-07-12 17:33:04
【问题描述】:

在 NodeJS 中,您可以使用 --debug-brk 选项运行脚本,这会在第一行暂停您的脚本。然后,您可以附加调试器并恢复,确保无论脚本中的断点有多早,您都可以命中任何断点。

Chrome/Chrome 调试协议中有类似的东西吗?

我使用外部调试器在 Chrome 中调试 JS。 Chrome 通过命令行启动,启用了远程调试,指向带有我的网站/应用程序的本地服务器。 Chrome 启动后,调试器会附加到页面,但这需要时间 - 到附加调试器时,脚本几乎已经执行,这意味着我无法命中网站/应用程序生命周期早期的断点。

我曾想过在每个脚本的开头添加debugger; 语句,但随着时间的推移这会很烦人。我还认为 Chrome 开发工具需要打开 debugger; 语句才能真正暂停,所以这甚至可能不起作用。

【问题讨论】:

    标签: google-chrome debugging breakpoints


    【解决方案1】:

    在 Chrome DevTools 中,您可以使用“事件侦听器断点”强制执行在“脚本第一条语句”处暂停。还有其他一些,例如load,稍后会发生。然后,您可以继续执行,直到应该命中相关断点。

    【讨论】:

    • 您知道是否有办法在启动 Chrome 时从命令行参数或通过 Chrome 调试协议消息控制此复选框?因为我使用的是外部调试器,所以我需要能够从 Chrome 开发工具外部启用该复选框
    • 选中的设置会一直保留,直到您取消选中它。我不知道您的设置,但说您在一台设置了 --remote-debugging-port 标志的计算机上运行了 Chrome 主机,然后打开您的应用程序,然后在另一台计算机上打开 Chrome,导航到主机:端口地址,然后选择标签。如果您在客户端设置事件侦听器断点,然后在主机上刷新应用程序,它应该会在客户端中断。如果您正在使用另一个调试器,使用 /JSON 端点,那么我想这取决于该调试客户端是否能够在第一个脚本上暂停?
    • 有趣,那么这应该意味着有一种方法可以远程设置事件侦听器断点,因为在您的示例中,“客户端”Chrome 需要某种方式来通知“主机”Chrome 它应该暂停该事件。在快速查看 Chrome 调试协议后,我似乎找不到与此相关的内容,但必须有办法......我会继续寻找
    • 您也许可以在Debugger Protocol Viewer 中找到一些东西。我没有用Remote Debugging 测试过,所以我可能是错的。
    • 找到了!这是当您勾选复选框时“客户端”Chrome 发送的 Chrome 调试协议消息(忽略 id,这可能只是消息的会话特定 ID):{ id: 101, method: "DOMDebugger.setInstrumentationBreakpoint", params: { eventName: "scriptFirstStatement" } }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    • 2021-02-12
    相关资源
    最近更新 更多