v8引擎 - 创建数组会导致错误

时间:2017-05-05 22:22:28

标签: v8 embedded-v8

使用v8引擎创建数组时遇到问题。 这是我到目前为止所得到的:

void function(Isolate* isolate) {    
    EscapableHandleScope scope(isolate);
    Local<Array> array = Array::New(isolate, n);
    ...
}

但是我的程序每次到达第二行时都会崩溃。 这是我收到的输出:

==== C stack trace ===============================
    v8::internal::Scope::set_start_position [0x000002A7A393E69E+10258841]
    v8::internal::Scope::set_start_position [0x000002A7A37A1C63+8568670]
    v8::internal::Scope::set_start_position [0x000002A7A37A1E02+8569085]
    v8::internal::Scope::set_start_position [0x000002A7A3004CBC+585655]

我已经尝试在此函数中创建一个整数或另一个对象。在那里工作得很完美。 知道这里出了什么问题吗?

  

我发现出了什么问题。但我不是百分百肯定为什么。我放了之后   在Context_Scope中的Array初始化,它工作。但为什么呢   是否为Integer初始化(没有上下文范围)?

1 个答案:

答案 0 :(得分:1)

这里没有足够的信息来说明发生的事情。根据您粘贴的代码段,我只能说n没有定义,所以它甚至不应该编译,但显然这不是您正在讨论的问题。

请在调试模式下编译代码,然后在调试器中运行它,以便获得正确的堆栈跟踪。也许它不仅仅是崩溃,而是会遇到一个断言(“DCHECK”),它可能会揭示错误。 (一般来说,学习如何使用调试器几乎是使用C ++的必要条件。)

将您所拥有的内容与官方示例代码进行比较可能也会有所帮助,例如: https://chromium.googlesource.com/v8/v8/+/master/samples/hello-world.cc

如果您仍然需要帮助:请发布您的整个代码,包括您的构建方式以及您正在使用的V8版本。

编辑问题后进行编辑:

  • 像缺少的ContextScope这样的东西就是我要求查看整个代码的原因; - )

  • 小整数与上下文无关。 (这是一个你通常不关心的实现细节,因为对于所有有趣的事情你都需要一个上下文。)