Chrome JavaScript调试 - 如何在页面刷新或通过代码中断之间保存断点?

时间:2011-11-23 14:22:30

标签: javascript debugging google-chrome breakpoints

使用Chrome及其JavaScript调试器时,每次重新加载页面/脚本时,我的断点都会丢失,我必须在弹出窗口中找到脚本文件,找到断点的代码行,单击添加它等等。

有没有办法保存这些断点,即使在页面刷新后它也会中断(我用过的其他调试器也这样做了)?

或者,我的JavaScript代码中是否有一种干净的方式我可以输入一些内容来告诉chrome开始跟踪(暂停一行)?

8 个答案:

答案 0 :(得分:67)

你可以放一个

debugger;

打破大多数JavaScript环境。他们肯定会坚持下去。如果你使用的话,最好有一个minifier来解决生产环境的调试器和console.log调用问题。

在最新版本的Chrome浏览器中,控制台面板顶部有一个“保留日志”选项,位于过滤器旁边。在旧版本中,右键单击空控制台窗口将显示该选项(“保留登录导航”)。当你没有console.log语句或硬编码调试器调用时,这很方便。

更新:我在github上找到了一个名为chimney的工具,它接受一个文件并删除所有的console.log调用。它提供了如何删除调试器调用的好主意。

答案 1 :(得分:35)

设置断点,切换到“网络”标签,然后选择保留导航日志切换按钮。现在刷新时断点应该在那里。

或者JavaScript方式是使用

debugger;

答案 2 :(得分:19)

另外,您是否使用an attached query parameter to the URL with the current Epoch time将JavaScript文件从服务器发送到客户端?这用于防止缓存JavaScript文件。

在这种情况下,似乎Chrome开发者工具在刷新后将文件解释为另一个文件,这将(正确)删除断点。

对我来说,删除查询参数后,CDT会在刷新后保留断点。

答案 3 :(得分:9)

这可能发生在您从其他脚本动态加载或评估的脚本中?我可以自己说,在我发现sourceURL属性之前,这种情况真的让我很恼火。在要调试的脚本的最后一行放置以下特殊格式的注释会将其“锚定”在Chrome中,因此它有一个参考框架:

//#sourceURL = filename.js

现在,手动放置的断点将在页面加载之间保持不变!该惯例实际上源于源图规范,但Chrome至少将其视为独立技术。这是一个reference

答案 4 :(得分:1)

对于使用ExtJs 6.x的人:
您可以在Ext.Loader中添加"缓存" " disableCacheBuster" 查询参数到页面&#39 ; s。网址。这将删除" _dc"文件中的参数,并启用chrome调试器来保留断点。

请参阅应用程序中的bootstrap.js(config参数disableCaching)。

答案 5 :(得分:1)

你可以把调试器;在您要开始调试的代码之前。页面开始加载后,它将停在调试器上;声明。然后,您可以根据需要轻松应用调试点。

答案 6 :(得分:0)

您可以在源代码中使用debugger;语句使调试器中断。

答案 7 :(得分:0)

Chrome开发者工具应该按照您的预期行事,但您可以在(开发!)代码中添加debugger;语句来暂停执行。