嵌入式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]

我已经尝试在此功能中创建整数或其他对象。它可以很好地工作。知道这里怎么了?

我发现出了什么问题。但是我不是100%确定为什么。我放了之后 context_scope中的数组初始化,它起作用。但是为什么有 用于整数初始化(没有上下文范围(?

这里没有足够的信息来判断发生了什么。根据您粘贴的片段,我只能说n没有定义,因此它甚至不应该编译,但显然这不是您在谈论的问题。

请在调试模式下编译您的代码,然后在调试器中运行它,以便您获得正确的堆栈跟踪。也许不仅仅是崩溃,它会遇到一个主张(" dcheck"(,这可能会揭示出什么问题。(一般来说,学习如何使用调试器几乎是与C 一起工作的必要条件。(

比较您的官方示例代码,例如https://chromium.googlesource.com/v8/v8//master/samples/hello-world.cc。

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


编辑问题后编辑:

  • 诸如缺少的上下文Scope之类的东西是为什么我要求查看您的整个代码; - (

  • 小整数独立于上下文。(这是您通常不在乎的实现细节,因为无论如何,对于所有有趣的事物,您都需要一个上下文。(

最新更新