如何调试我的 JavaScript 代码?[关闭]

IT技术 javascript debugging
2021-01-01 16:19:19

当我发现我有一个有问题的代码片段时,我应该如何调试它?

6个回答

Firebug是用于此目的的最受欢迎的工具之一。

Firebug 出现的时间早于它,但考虑到最近出现的其他工具,我认为它不是最好的工具。
2021-02-10 16:19:19
自从我发现 Firebug 以来,我一直在使用它,它对我有很大帮助!控制台调试、分析器、检查器...
2021-02-10 16:19:19
2021-02-12 16:19:19
我喜欢萤火虫,但我不会声称它比 webkit 的检查器高出一筹。
2021-02-13 16:19:19
@NinaScholz 现在所有浏览器默认都带有喷气背包!
2021-02-18 16:19:19

所有现代浏览器都带有某种形式的内置 JavaScript 调试应用程序。这些细节将在相关技术网页上进行介绍。我个人对调试 JavaScript 的偏好是Firefox 中的Firebug我并不是说 Firebug 比其他任何东西都好;这取决于您的个人喜好,无论如何您应该在所有浏览器中测试您的站点(我个人的首选始终是 Firebug)。

我将介绍下面的一些高级解决方案,以Firebug 为例

火狐

Firefox 自带内置的 JavaScript 调试工具,但我建议您安装Firebug插件。这在方便的基本版本的基础上提供了几个附加功能。我将在这里只讨论 Firebug。

安装 Firebug 后,您可以像下面那样访问它:

首先,如果您右键单击任何元素,您可以使用 Firebug Inspect Element

在 Firebug 中检查元素

单击此按钮将打开浏览器底部的 Firebug 窗格:

萤火虫窗格

Firebug 提供了多种功能,但我们感兴趣的是脚本选项卡。单击脚本选项卡打开此窗口:

脚本选项卡

显然,要进行调试,您需要单击reload

sctipt 选项卡中的 JavaScript

现在,您可以添加断点通过单击行至一块要断点添加到JavaScript代码的左边:

添加断点

当您的断点被击中时,它将如下所示:

断点被击中

您还可以添加监视变量,并且通常可以在现代调试工具中执行您期望的所有操作。

观察变量

有关 Firebug 中提供的各种选项的更多信息,请查看Firebug 常见问题解答

铬合金

Chrome 也有自己的内置 JavaScript 调试选项,其工作方式非常相似,右键单击,检查元素等看看Chrome 开发者工具我通常发现Chrome 中堆栈跟踪比 Firebug 更好。

IE浏览器

如果您在.NET 中进行开发并在 Web 开发环境中使用 Visual Studio,您可以通过放置断点等方式直接调试 JavaScript 代码。您的 JavaScript 代码看起来与调试 C# 或VB.NET代码完全相同

如果您没有此工具,Internet Explorer 还提供了上面显示的所有工具。令人讨厌的是,您没有右键单击Chrome 或 Firefox 的检查元素功能,而是F12访问开发人员工具这个问题涵盖了大部分要点。

2021-02-27 16:19:19
...您一定已经准备好复制粘贴缓冲区中的内容了,对吧?:)
2021-02-28 16:19:19
对不起,我完全错过了它是由同一个人提问和回答的!我以为您每次有人问这个问题时都会放入某种 Javascript Debug Copypasta。
2021-03-01 16:19:19
  • Internet Explorer 8(开发人员工具 - F12)。其他任何东西在 Internet Explorer 领域都是二流的
  • 火狐和萤火虫点击F12显示。
  • Safari(显示菜单栏,首选项->高级->显示开发菜单栏)
  • Google Chrome JavaScript 控制台(F12或(Ctrl+ Shift+ J))。大多数浏览器与 Safari 相同,但恕我直言,Safari 更好。
  • Opera(工具->高级->开发者工具
+1 Opera js 调试器给出了比其他所有调试器更好的错误消息
2021-02-14 16:19:19
尽管在 2009 年 Safari 可能会在 2014 年淘汰 Chromes 开发人员工具,但我会在一周中的任何一天通过 Safari 在 Chrome 中进行调试。Chrome 的开发者工具和 Firefox 的 Firebug 是一流的……虽然使用起来很尴尬,但 IE11 的开发工具可能排在第三位(恕我直言
2021-02-27 16:19:19

JavaScript 中有一个debugger关键字来调试 JavaScript 代码。放置调试器;JavaScript 代码中的片段。那时它会自动开始调试 JavaScript 代码。

例如:

假设这是你的test.js文件

function func(){
    //Some stuff
    debugger;  //Debugging is automatically started from here
    //Some stuff
}
func();
  • 当浏览器在启用调试器的开发者选项中运行网页时,它会自动从调试开始调试观点。
  • 应该在浏览器中打开开发者窗口。
在 Safari 上,它有时有效,有时无效。我确定这是我的结局。FWIW 我已经为 JSContexts 启用了自动显示 Web Inspector。
2021-03-02 16:19:19

我使用古老的好printf方法(一种古老的技术,在任何时候都可以很好地工作)。

看魔术%o

console.log("this is %o, event is %o, host is %s", this, e, location.host);

%o转储JS 对象的可点击和可深入浏览的漂亮打印内容。%s显示只是为了记录。

和这个:

console.log("%s", new Error().stack);

为您提供类似于 Java 的堆栈跟踪到new Error()调用(包括文件路径和行号!!)。

双方%onew Error().stack在Chrome和Firefox提供。

使用如此强大的工具,您可以假设您的 JS 出了什么问题,放置调试输出(不要忘记 wrap inif语句以减少数据量)并验证您的假设。修复问题或做出新的假设或将更多的调试输出放在位问题上。

同样对于堆栈跟踪使用:

console.trace();

控制台所说

快乐黑客!

+1 为 console.trace(); 与其他人不同的答案。
2021-02-16 16:19:19