javascript - 如何在浏览器中调试内存泄漏、无限循环和执行 Javascript?

标签 javascript debugging

在浏览器中检查 javascript 中的无限循环的推荐方法是什么?假设我打开 Chrome,它崩溃了,有没有办法断点或以某种方式查明崩溃发生的位置?

然后我想知道,我如何在浏览器中查看正在执行的脚本的运行列表(比如我忘记跟踪的某个计时器正在运行并且它正在减慢速度)?最好在 Chrome/Safari 中使用,但 Firefox 也可以。

我一直在使用元素检查器/控制台,只是还没有想出有效调试这 3 个东西的方法。

谢谢!

最佳答案

1。内存泄漏

2。无限循环

在复杂的无限循环分布在数百个函数中的情况下,我不完全理解浏览器会向您指出什么。当然,我希望浏览器能够精确定位简单的循环,例如某些函数在 15 秒内不返回。但至少我们有一些东西,浏览器告诉你 a) 脚本运行缓慢,和 b) 调用了哪些函数以及每个函数花费了多少时间。此外,您还可以设置断点并观看它逐步运行。

3。监控定时器和间隔

打开 WebKit 的时间线面板,点击“记录”并监控您可能想知道的关于每个计时器和间隔的所有信息。 如果您不使用 WebKit,您可以自己编写一些简单的代码:

_setTimeout = setTimeout
setTimeout = function(fn, time) {
  var timeout = _setTimeout(function() {
    console.log('Timeout #' + timeout + ' fired on ' + (fn.name || 'anonymous'))
    fn()
  }, time)
  return timeout
}

通常我只是让 document.title 在超时/间隔触发时闪烁。

4。一般代码性能

关于javascript - 如何在浏览器中调试内存泄漏、无限循环和执行 Javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5094595/

相关文章:

c# - Visual Studio For Mac 调试单元测试

cocoa-touch - 崩溃在COCOA框架里面,如何调试?

javascript - Quasar 表列过滤

javascript - 如何在我的页面上永久禁用 Google Analytics 跟踪?

javascript - 如何最好地在 js 上对产品进行排序?

debugging - 调试 T4Scaffolding.Core Nuget 包时的 Set-DefaultScaffolder : Cannot get an instance of EnvDTE. DTE - 高级 Powershell 调试

javascript - 在 “double-mustache” 语法中使用 html 实体

javascript - 提取元素的 HTML

internet-explorer - 从我的Web应用程序打印时IE 6.0崩溃

使用 xdebug 进行 php 命令行调试