JavaScript:有没有办法让Chrome破解所有错误?

时间:2010-02-09 23:33:28

标签: javascript google-chrome debugging webkit

我正在寻找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上尝试上面粘贴的代码。

5 个答案:

答案 0 :(得分:259)

我遇到了麻烦所以我发布了显示不同选项的图片:

Chrome 71.0.3578.98 [2018年12月18日]

非常相似的用户界面,因为至少Chrome 38.0.2125.111 [2014年12月11日]

在标签Sources中: enter image description here Screenshot from Chrome 50.0.2661.75

当按钮激活时,您可以Pause On Caught Exceptions使用下面的复选框: enter image description here


以前的版本

Chrome 32.0.1700.102 [2014年3月3日]

enter image description here

enter image description here enter image description here enter image description here

Chrome 27.0.1453.93 稳定

Debug options

答案 1 :(得分:204)

修改:我回复的原始链接现在无效。截至2016-11-11,较新的网址为https://developers.google.com/web/tools/chrome-devtools/javascript/add-breakpoints#exceptions

我意识到这个问题有一个答案,但它不再准确。 使用上面的链接^


(链接替换为上面编辑过的) - 您现在可以将其设置为中断所有异常或仅处理未处理的异常。 (请注意,您需要位于来源标签中才能看到该按钮。)

Chrome现在还添加了一些其他非常有用的断点功能,例如打破DOM更改或网络事件。

通常情况下,我不会重新回答一个问题,但我自己也有同样的问题,而且我发现这个现在错误的答案,所以我想我会把这些信息放在这里给那些后来搜索的人。 :)

答案 2 :(得分:17)

Chrome现在支持“暂停所有例外”按钮。

启用它:

  • 转到Chrome开发者工具
  • 中的“来源”标签
  • 点击窗口底部的“暂停”按钮切换到“暂停所有例外模式”。

请注意,此按钮具有多个状态。继续单击按钮以在

之间切换
  • “暂停所有例外” - 按钮的颜色为浅蓝色
  • “暂停未捕获的例外”,该按钮的颜色为紫色
  • “暂停异常” - 按钮颜色为灰色

答案 3 :(得分:1)

几乎任何错误都会引发异常。我能想到的唯一错误是“暂停异常”选项,这种错误是在任何代码执行之前发生的语法错误,因此无论如何都没有地方可以暂停,并且没有任何代码会运行。 / p>

显然,如果Chrome在try-catch块中,它不会暂停。它只会暂停未捕获的异常。我不知道有什么方法可以改变它。

如果你只需要知道发生异常的行(那么你可以设置一个断点,如果异常是可重现的),给catch块的Error对象有一个stack属性,显示异常发生的位置。

答案 4 :(得分:1)

不幸的是,Chrome中的开发者工具似乎无法像Firebug那样“停止所有错误”。