嵌入式JavaScript引擎V8中的跟踪执行脚本

时间:2013-03-12 06:33:43

标签: v8 embedded-v8

使用v8 JavaScript引擎时,我这样做:

script->Run();

但我想做那样的事情:

while (!script->Finished()) {
   script->NextOperation();
   printf("current line: %i\n", script->line);
}

我问这个是因为我想更好地理解v8。我知道它是JIT编译的,它有调试器接口监听某些端口。我没有通过检查标题来回答我的问题,只留下谷歌提供的极简主义文档。

1 个答案:

答案 0 :(得分:0)

你究竟找不到答案的究竟是什么问题?

script->NextOperation()应该做什么?

V8本身不是JIT编译的;它JIT编译它执行的JavaScript代码。如何更好地跟踪与更好地理解V8相关的JS脚本?

我想到了两种现有的方法:

  • 如果你想追踪JavaScript执行,V8有一个内置的--trace标志,只要输入或退出一个函数,就会在stdout打印一行。
  • 如果你想跟踪C ++方面以了解V8的内幕,请使用你最喜欢的C ++调试器。 (请注意,这将是一个非常耗时的方法,因为V8很庞大并且做了很多事情。在调查中更专注一点可能会有所帮助,例如“解析器如何工作”或“什么”垃圾收集器是否“。还有各种各样的设计文档和博客文章,可能是一种更快理解许多概念的方法,而不是挖掘源代码或跟踪执行。”