使用Chrome及其JavaScript调试器时,每次重新加载页面/脚本时,我的断点都会丢失,我必须在弹出窗口中找到脚本文件,找到断点的代码行,单击添加它等等。
有没有办法保存这些断点,即使在页面刷新后它也会中断(我用过的其他调试器也这样做了)?
或者,我的JavaScript代码中是否有一种干净的方式我可以输入一些内容来告诉chrome开始跟踪(暂停一行)?
答案 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;
语句来暂停执行。