如何在V8中获取当前功能的名称或编号

时间:2015-06-23 06:24:05

标签: javascript function v8 line-numbers

我想在 V8 中动态挂钩有关当前执行功能的信息。

例如函数名称,行号或文件名等

当页面或应用程序在其中运行时,V8是否可以设置一些断点来获取此信息?

例如:



< script >
  function f1() {
    ...
    f2();
    ...
  }

function f2() {
  ...
}
f1(); 
< /script>
&#13;
&#13;
&#13;

执行f1()时,获取f1的函数名称和亚麻布;然后f1()调用f2(),f2()正在执行,获取f2的函数名称和亚麻布;最后,当f2()完成后,回到f1(),得到f1()的函数名和亚麻布。

这就是我所说的&#34;有关V8&#34;中当前执行功能的信息。

1 个答案:

答案 0 :(得分:1)

您可以使用新的Error()。stack然后解析输出。

(function() {
    var b = function() {
        var trace = new Error().stack.split("\n")[1];
        console.log(trace);
    };

    var a = function() {
        b();
    };

    a();
})();

输出:

at b (file:///home/inonit/tmp/stack.html:6:16)

如果您愿意,可以从那里提取文件名,功能名称,行号和列号。