我的代码只在c++中工作,但在Node.js中无法使用相同的代码
My code is working in c++ exclusively but the same code will not work from within Node.js
我有一组Node.js c++插件。它们自己完美地工作,我可以调用它们的函数,所以一切都是正确连接的。当我向我需要的外部库添加调用(访问数据库)时,一切都很好:
- 节点查看并编译外部类
- 如果数据库配置数据错误,我会收到连接错误
然而,如果连接数据是正确的,那么它将进行核心转储,而不做任何解释。我已经尽了最大努力从核心转储中获取任何数据,但我什么都没有。
如果我使用与我正在使用的代码相同的代码,并将其编译并以c++的形式独占运行,它就可以工作了。所以我知道:
- 连接数据正确
- 库工作并连接到数据库(我会返回行)
所以我的结论是:在Node.js环境中运行会导致代码中断。
如果有人有更多的Node.js经验,并对该做什么或可能发生的事情提出建议,我将不胜感激
这只是一个猜测,因为没有提供任何代码,但v8代码是否可能在另一个线程中执行(与main不同)?
例如,在成功连接时调用的一些回调调用node/v8函数(我假设您提到的那些外部库启动自己的线程来完成它们的工作)。
如果是这样的话,问题是node/v8代码只能从主线程调用。那些SO线程可能很有用:
- 从node.js本机代码调用回调
- NodeJS Native扩展中来自不同线程的回调
至于调试,除了检查核心之外,您还可以使用gdb运行代码,这样您就可以在一些有趣的地方设置断点。
$ gdb node
(gdb) run test_connection.js
或
(gdb) start test_connection.js
(gdb) break <some interesting place>
(gdb) cont
GDB运行和启动信息
即使你不设置断点,当它崩溃时,你也可以检查堆栈跟踪,看看不同线程中发生了什么。
当然,正如其他人所建议的那样,所有东西都应该使用调试符号构建。
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- EM_ASM里面的 JS 代码会发生什么变化?
- 如果用户尝试从 JS 调用对象的未定义函数C++则回调C++代码
- 在 JS 中通过 Emscripten 获取 SDL 代码C++时遇到问题
- 如何隐藏TensorFlow.js代码和经过训练的模型
- 将节点 js 代码集成到 cpp 库时出错
- 将代码从 JS 转换为 CPP
- 以有效的方式从 Node .js运行 C 或C++代码
- 节点 js 我可以从用 C++ 编写的 windows 命令行应用程序中获取退出代码
- JavaScript:从浏览器和 Node.js 中的 JavaScript 代码调用C++库
- 如何从Node.js调用C++代码
- 如何将chrome.tabCapture流从js传递到c++PNACL本机代码
- 如何检查Firefox是否使用asm.js代码
- 我的代码只在c++中工作,但在Node.js中无法使用相同的代码
- js移植到本机代码
- 当asm.js比普通JS代码快的时候,我为什么要用JS写新代码呢?
- 如何为c++代码创建一个dll(在树形程序中使用大量指针),以便在ASP. js中引用它.Net Web应用程序
- 从node.js调用C代码
- 在V8中异步运行c++和JS代码
- 如何从一个Node.js c++插件传递一个关联数组到js代码