Firefox 中的 javascript 配置文件

标签 javascript profiling instrumentation

(我知道有些人已经问过有关 js 配置文件的问题,但如果我理解正确的话,这不是我需要的。)

我想跟踪javascript的执行,以收集以下信息:1)调用了哪个函数,2)调用函数的时间,以及3)函数的执行时间。

我想在线收集信息(关于已部署的代码),但不是在内部收集信息。因此,权衡必须是轻松的。另外,我不想在调用函数的前后手动添加一行。然而,如果有一种方法可以动态地检测代码,那就太好了。

提前致谢!

最佳答案

我不认为 JavaScript 会自动跟踪函数启动时间和函数停止时间的任何系统。这可能是您必须自己添加的内容。如果这是您所需要的,您可能需要考虑使用 PHP 来提供 JavaScript,并使用正则表达式通过正则表达式或类似的东西来查找每个函数的开头和结尾。

您的正则表达式可能如下所示(完全未经测试,因此您必须进行实验):

/function [A-Za-z_$][A-Za-z0-9_$]*{(.*?)}/i

一旦您可以访问函数的内部,您就可以将该值替换为该函数,以跟踪其围绕原始函数定义的开始和结束。

这样做的好处是可以完全按照您的意愿行事,而不必担心修改 js 代码的功能。然后服务器将完全处理它。

要么,要么不直接调用函数,而是使用包装函数:

function wrapFunction( func, context, argList )
{ 
    // Replace with however you are storing this.
    console.log( new Date().getTime() );
    func.apply( context, argList );
    console.log( new Date().getTime() );
}

这比让服务器为你更新 JS 更干净。不幸的是,这也意味着必须手动重写 JS。

我的建议是简单地调整日志语法并使用它。大多数记录器将输出时间戳、上下文、级别和特定消息。如果您只是在函数的开头和结尾调用记录器,它将完全按照您的要求进行操作。此外,由于许多都是可配置的,您可以将其显示到 Firefox 中的 JS 控制台,将信息发送到服务器,或者完全禁用(如果您愿意的话)。

这里有一个 JS 记录器列表:

JavaScript loggers

不幸的是,这需要您手动更新所有内容,但这似乎是开箱即用的获得 90% 所需内容的最简单方法。

关于Firefox 中的 javascript 配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1628835/

相关文章:

.Net 二进制反序列化运行时平台的故障检测/取证

javascript - 为什么 ajaxStop() 没有在 Internet Explorer 中触发?

javascript - 如何避免重复以下替换代码?

android - 在 TestCase 中启动第二个 Activity (这不是被测 Activity )

java - 检测、通知和同步的含义

c++ - 为什么我的代码会崩溃?

javascript - jQuery : Append text after an input field

javascript - aspx gridview 启用按钮

mongodb - 使用 C# 驱动程序时分析 MongoDB 查询

lua - 简单的 Lua 分析