2017-05-05 42 views
0

我在使用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%确定为什么。在我将 Array初始化放入Context_Scope之后,它工作。但为什么它 工作整数初始化(没有上下文范围)?

回答

1

这里没有足够的信息来说明发生了什么。基于你粘贴的代码片段,我只能说n没有被定义,所以它甚至不应该编译,但显然这不是你要讨论的问题。

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

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

如果您仍然需要帮助:请发布您的完整代码,包括您如何构建它以及您使用的是哪个V8版本。您的问题编辑后


编辑:

  • 事情,比如缺少ContextScope是为什么我要求看一下你的整个代码;-)

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

相关问题