debugging JavaScript:有没有办法让Chrome在所有错误时都中断?

bfrts1fy  于 2023-03-19  发布在  Java
关注(0)|答案(5)|浏览(99)

我正在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

8gsdolmq

8gsdolmq1#

我有麻烦得到它,所以我张贴图片显示不同的选项:

Chrome浏览器111.0.5563.64[于2023年3月14日更新]

  • Chrome中最近的更改移到了“断点”部分[我于2023年3月14日发现]*

Chrome浏览器101.0.4951.64[2022年5月27日]

  • 自Chrome 38.0.2125.111起,用户界面非常相似[2014年12月11日]*

在选项卡Sources中:

按钮激活后,您可以使用下面的复选框Pause On Caught Exceptions

先前版本

chrome 合金32.0.1700.102[2014年2月3日]

一个四个一个x一个五个一个x一个六个一个

chrome 合金27.0.1453.93稳定

fae0ux8s

fae0ux8s2#

编辑:我回答的原始链接现在无效.较新的URL将是https://developers.google.com/web/tools/chrome-devtools/javascript/add-breakpoints#exceptions截至2016-11-11.
我知道这个问题有答案,但它不再准确。使用上面的链接^
(link替换为上面编辑的)-现在可以设置它在所有异常或未处理的异常时中断。(注意,您需要在选项卡中才能看到该按钮。)
Chrome现在还增加了一些其他非常有用的断点功能,比如在DOM更改或网络事件时中断。
通常我不会重新回答一个问题,但我自己也有同样的问题,我发现了这个现在错误的答案,所以我想我应该把这个信息放在这里的人谁后来沿着搜索。

goucqfw6

goucqfw63#

Chrome现在通过“暂停所有例外”按钮支持此功能。
要启用它:

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

请注意,此按钮有多种状态。持续单击此按钮可在以下状态之间切换

  • “暂停所有异常”-按钮颜色为浅蓝色
  • “暂停未捕获的异常”,按钮为紫色
  • “出现异常时不暂停”-按钮颜色为灰色
n3ipq98p

n3ipq98p4#

几乎所有的错误都会抛出一个异常,我能想到的唯一不能使用“pause on exceptions”选项的错误是语法错误,它们发生在任何代码执行之前,所以没有地方可以暂停,任何代码都不会运行。
显然,如果异常在try-catch块中,Chrome不会在异常上暂停。它只在未捕获的异常上暂停。我不知道有什么方法可以改变它。
如果您只需要知道异常发生在哪一行(如果异常可重现,则可以设置断点),则catch块的Error对象具有stack属性,该属性显示异常发生的位置。

qlckcl4x

qlckcl4x5#

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

相关问题