Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何调试JavaScript代码?_Javascript_Debugging - Fatal编程技术网

如何调试JavaScript代码?

如何调试JavaScript代码?,javascript,debugging,Javascript,Debugging,当我发现有一个有问题的代码片段时,我应该如何调试它?是用于此目的的最流行的工具之一。我发现新版InternetExplorer8 press F12非常适合调试JavaScript代码 当然,如果您使用Firefox,这很好。VisualStudio2008有一些非常好的JavaScript调试工具。您可以在客户端JavaScript代码中删除断点,并使用与服务器端代码完全相同的工具逐步完成它。无需附加到进程或执行任何复杂的操作来启用它。我使用开发者菜单/控制台Safari 4。它几乎和萤火虫一

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

是用于此目的的最流行的工具之一。

我发现新版InternetExplorer8 press F12非常适合调试JavaScript代码


当然,如果您使用Firefox,这很好。

VisualStudio2008有一些非常好的JavaScript调试工具。您可以在客户端JavaScript代码中删除断点,并使用与服务器端代码完全相同的工具逐步完成它。无需附加到进程或执行任何复杂的操作来启用它。

我使用开发者菜单/控制台Safari 4。它几乎和萤火虫一样


console.log是新的黑色-比alert好得多。

我使用了一些工具:、Firebug和Visual Studio。我听说InternetExplorer8有一个很好的内置调试器。

从Firebug和IE调试器开始

但是要小心JavaScript中的调试器。每隔一段时间,它们就会对环境产生影响,足以导致您试图调试的一些错误

示例:

对于InternetExplorer来说,这通常是一个逐渐放缓的过程,是某种内存泄漏类型的交易。大约半小时后,我需要重新启动。这似乎是相当正常的


对于Firebug来说,它可能已经超过一年了,所以它可能是一个更老的版本。因此,我不记得具体细节,但基本上代码没有正确运行,在尝试调试一段时间后,我禁用了Firebug,代码运行良好。

我以前一直使用,直到InternetExplorer8问世。我不是InternetExplorer的超级粉丝,但在花了一些时间使用内置的开发工具(包括一个非常好的调试器)之后,使用其他工具似乎毫无意义。我必须向微软致敬,他们在这个工具上做得非常出色

您也可以退房。使用它所要做的就是在HTML中包含几个标记。它是Firebug的一个有用的补充,Firebug或多或少是必须的。

我的第一步始终是验证HTML并检查语法。如果您有干净的标记和有效的JavaScript代码,那么是时候使用Firebug或其他调试器了

InternetExplorer8开发工具-F12。其他任何东西在InternetExplorer领域都是二流的 Firefox和。点击F12显示。 Safari显示菜单栏,首选项->高级->显示开发菜单栏 谷歌Chrome JavaScript控制台F12或Ctrl+Shift+J。大部分浏览器与Safari相同,但Safari比IMHO更好。 Opera工具->高级->开发工具
与大多数答案一样,这实际上取决于:您试图通过调试实现什么?基本开发,解决性能问题?对于基本发展,前面的所有答案都是足够的

特别是对于性能测试,我推荐Firebug。能够分析哪些方法在时间上是最昂贵的,这对于我参与的许多项目来说都是非常宝贵的。随着客户端库变得越来越健壮,客户端承担的责任也越来越大,这种类型的调试和分析只会变得更加有用

Firebug控制台API: 尽管是味精;我只是想知道发生了什么。。。每个开发人员都遇到过这样的情况,即您最终会陷入一个非常大或无休止的循环中,无法摆脱

我建议在开发过程中,如果您想要一个非常直观的调试选项,请使用一个可以让您突破的调试选项。PS歌剧,狩猎?铬呢?所有人在其本机对话框中都有此功能

//global flag
_debug = true;
function debug(msg){
  if(_debug){
    if(!confirm(msg + '\n\nPress Cancel to stop debugging.')){
      _debug = false;
    }
  }
}

有了上述功能,您可以进入一个弹出调试的大循环,按Enter/Ok可以跳转每一条消息,但按Escape/Cancel可以很好地跳转。

除了使用Visual Studio的JavaScript调试器外,我还编写了自己的简单面板,包括在页面中。这就像VisualStudio的功能一样。我可以更改变量的值、调用函数和查看变量的值。它只是计算在文本字段中编写的代码。

我正在使用的是一个应用程序的JavaScript调试器。

如果您正在使用,只需放置调试器;上面是要调试的代码。在执行过程中,控件将在该位置暂停,您可以从此处开始一步一步地调试。

我使用旧的良好printf方法,这是一种古老的技术,在任何时候都能很好地工作

请看魔法%o:

%o转储JS对象的可点击、可深度浏览、打印精美的内容。%s的出现只是为了记录

这是:

console.log("%s", new Error().stack);
提供到新错误调用点的类似Java的堆栈跟踪,包括文件路径和行号

Chrome和Firefox中都提供了%o和new Error.stack

有了这些强大的工具,您可以假设JS中出现了什么问题,将调试输出放在if语句中,以减少数据量并验证您的假设。解决问题或 做出新的假设或将更多调试输出放入位问题

对于堆栈跟踪,还应使用:

console.trace();
照我说的


快乐的黑客

所有现代浏览器都带有某种形式的内置JavaScript调试应用程序。相关技术网页将介绍这些技术的详细信息。我个人喜欢在Firefox中调试JavaScript。我并不是说Firebug比其他任何东西都好;这取决于你的个人喜好,你可能应该在所有浏览器中测试你的网站,无论如何,我个人的第一选择总是Firebug

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

火狐 Firefox自带内置的JavaScript调试工具,但我建议您安装该插件。这在基本版本的基础上提供了一些方便的附加功能。我在这里只讲萤火虫

安装Firebug后,您可以按如下方式访问它:

首先,如果右键单击任何可以使用Firebug检查的元素:

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

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

显然,要进行调试,需要单击“重新加载”:

现在,您可以通过单击要添加断点的JavaScript代码段左侧的行来添加断点:

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

您还可以在现代调试工具中添加并通常执行所需的所有操作

有关Firebug中提供的各种选项的更多信息,请查看

铬 Chrome还有自己的内置JavaScript调试选项,其工作方式非常类似,右键单击、检查元素等。。看一看。我一般认为铬合金的性能比Firebug好

Internet Explorer 如果您在Visual Studio中开发并使用web开发环境,则可以通过放置断点等直接调试JavaScript代码。您的JavaScript代码看起来与调试C或C代码完全相同


如果没有,Internet Explorer还提供了上面显示的所有工具。令人恼火的是,你没有用鼠标右键点击Chrome或Firefox的inspect元素功能,而是通过按F12键访问开发者工具。涵盖了大部分要点。

除了Firebug和浏览器本机开发人员扩展之外,JetBrains WebStorm IDE还内置了所需的扩展

还支持:

共同脚本: 免费测试的选项有30试用版或使用。

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

例如:

假设这是您的test.js文件

当浏览器在启用了调试器的情况下运行“开发人员中的网页”选项时,它会自动从调试器开始调试;指向 应该在浏览器中打开“开发人员”窗口。 通过按F12键,web开发人员可以在不离开浏览器的情况下快速调试JavaScript代码。它内置于Windows的每个安装中

在中,F12工具提供调试工具,如断点、监视和局部变量查看,以及控制台
用于消息和即时代码执行。

链接:我喜欢firebug,但我不认为它比webkit的inspector高明。firebug在推出时领先于时代,但考虑到最近出现的其他工具,我认为它不是最好的工具。自从我发现firebug以来,我一直在使用它,这对我帮助很大!console.debug、profiler、inspector…@NinaScholz现在所有浏览器默认都带有Jetpack!你说的Fiddler是指Fiddler Web调试器吗?对于基本调试,IE8调试器已经满足了我的大部分需求。然而,如果你正在做任何类型的性能测试,你会很快发现IE缺乏。我最近有一个项目使用了一些繁重的javascript,我们真的需要对劣质系统进行精简,因为我们遇到了可怕的无响应脚本错误。Firebug在这个例子中是非常宝贵的,因为我能够运行console.profile方法来找出我所有的时间都花在了什么地方。IE8调试器也有一个配置文件功能,尽管没有Firebug那样图形化,它提供了调用树、调用计数和每个方法上花费的时间。我发现这足以隔离哪些JS代码花费的时间太长。+1 opera JS debugger提供了比所有重新启动更好的错误消息。尽管2009年Safari可能会在2014年淘汰Chromes开发工具,但我会在一周中的任何一天使用Chrome而不是Safari进行调试。Chrome的开发工具和Firefox的Firebug都是一流的。。。尽管IE11的开发工具仍然很难使用,但它可能排在第三位,jQuery没有simil吗
ar功能?。。。你一定已经在复制粘贴缓冲区准备好了,对吧@ChristianTernus,对不起,我完全没想到是同一个人在问和回答这个问题!我以为每次有人问这个问题时,你都会加入某种Javascript调试。如果你在代码上都放了console.log,记得删除它们,因为这会破坏console.trace的IE+1;与其他答案不同。@Ken Broke:@Thirisangu谢谢你!链接修复请查看此链接:tooOn Safari它有时有效,有时无效。我相信这是我这边的事。FWIW我已经为JSContext启用了自动显示Web检查器。
console.trace();
function func(){
    //Some stuff
    debugger;  //Debugging is automatically started from here
    //Some stuff
}
func();