我正在 Chrome 中寻找与 Firebug 的“中断所有错误”功能等效的功能。在“脚本”选项卡中,Chrome 有一个“暂停所有异常”,但这与中断所有错误并不完全相同。
例如,当使用以下代码加载页面时,我希望 Chrome 在行 foo.bar = 42
处中断。相反,即使启用“暂停所有异常”,我也没有得到预期的结果。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<script type="text/javascript">
function doError() {
foo.bar = 42;
}
window.onload = function() {
try {
doError();
} catch (e) {
console.log("Error", e);
}
}
</script>
</head>
<body>
</body>
</html>
您可以尝试上面粘贴在 this page 上的代码或使用此 jsFiddle。
console.log(gaga)
)或未定义属性(如 window.foo.bar
)的引用。
我很难得到它,所以我发布了显示不同选项的图片:
Chrome 101.0.4951.64 [2022 年 5 月 27 日]
至少自 Chrome 38.0.2125.111 [2014 年 12 月 11 日] 以来,用户界面非常相似
在标签 Sources
中:
https://i.stack.imgur.com/I5gQe.png
https://i.stack.imgur.com/WQM98.png
之前的版本
Chrome 32.0.1700.102 [2014 年 2 月 3 日]
https://i.stack.imgur.com/HTGRh.png
https://i.stack.imgur.com/vGNON.png
Chrome 27.0.1453.93 稳定版
https://i.stack.imgur.com/01Etw.gif
编辑:我回答的原始链接现在无效。截至 2016 年 11 月 11 日,较新的 URL 将是 https://developers.google.com/web/tools/chrome-devtools/javascript/add-breakpoints#exceptions。
我意识到这个问题有答案,但它不再准确。使用上面的链接^
(链接替换为上面的编辑)-您现在可以将其设置为中断所有异常或仅处理未处理的异常。 (请注意,您需要在 Sources 选项卡中才能看到该按钮。)
Chrome 现在还添加了一些其他非常有用的断点功能,例如中断 DOM 更改或网络事件。
通常我不会重新回答问题,但我自己也有同样的问题,我发现了这个现在错误的答案,所以我想我会把这些信息放在这里,以供后来搜索的人使用。 :)
现在,Chrome 中的“暂停所有例外”按钮支持此功能。
要启用它:
转到 Chrome 开发人员工具中的“源”选项卡
单击窗口底部的“暂停”按钮以切换到“暂停所有异常模式”。
请注意,此按钮有多种状态。持续点击按钮切换
“暂停所有例外” - 按钮为浅蓝色
“暂停未捕获的异常”,按钮为紫色。
“不要暂停异常” - 按钮颜色为灰色
几乎任何错误都会引发异常。我能想到的唯一错误不适用于“暂停异常”选项是语法错误,它发生在任何代码执行之前,所以无论如何都没有地方暂停,也没有任何代码将运行。
显然,如果异常位于 try-catch 块内,Chrome 将不会暂停该异常。它只在未捕获的异常上暂停。我不知道有什么办法可以改变它。
如果您只需要知道异常发生在哪一行(如果异常是可重现的,那么您可以设置断点),给 catch 块的 Error
对象有一个 stack
属性来显示异常发生的位置。
不幸的是,Chrome 中的开发人员工具似乎无法像 Firebug 那样“停止所有错误”。