javascript - 我的代码只在 C++ 中运行,但相同的代码在 Node.js 中不起作用

标签 javascript c++ database node.js

我有一套 Node.js C++ 插件。他们自己完美地工作,我可以调用他们的功能,所以一切都正确链接。当我添加对我需要的外部库的调用(访问数据库)时,一切正常:

  • Node 查看并编译外部类
  • 如果数据库配置数据错误,我会收到连接错误。

但是,如果连接数据是正确的,那么它会不加解释地进行核心转储。我已尽我所能 get any data from the core dump但我什么都没有。

如果我采用我正在使用的相同代码并编译它并以 c++ 的形式专门运行,它就可以工作。所以我知道:

  • 连接数据正确
  • 图书馆工作并连接到数据库(我得到行)

所以我的结论是:在 Node.js 环境中运行导致此代码中断。

如果有人有更多 Node.js 经验并且对做什么或可能发生的事情有建议,我将不胜感激。

最佳答案

这是一个疯狂的猜测,因为没有提供任何代码,但是否有可能 v8 代码正在另一个线程(不同于主线程)中执行?

例如,在成功连接时调用一些回调,调用 node/v8 函数(我假设你提到的那些外部库启动它们自己的线程来完成它们的工作)。

如果是这样的话,问题是 node/v8 代码只能从主线程调用。这些 SO 线程可能会有用:

至于调试,除了检查一个核心,你还可以用gdb运行你的代码,这样你就可以在一些有趣的地方设置断点。

$ gdb node
(gdb) run test_connection.js 

(gdb) start test_connection.js 
(gdb) break <some interesting place>  
(gdb) cont

GDB run and start info

即使您没有设置断点,当它崩溃时您也可以检查堆栈跟踪并查看不同线程中发生了什么。

当然,正如其他人所建议的那样,所有内容都应该使用调试符号构建。

关于javascript - 我的代码只在 C++ 中运行,但相同的代码在 Node.js 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17451646/

相关文章:

javascript - 如何将 "paint"荧光笔添加到文本上?

javascript - 我们如何使用 jquery 获取图像的位置并在该位置放置其他图像

C++ STL : Vector syntax

c++ - 检测第一次通过 do-while

java - Java Map<String, Object> 的 C++ 等价物

php - 使用 PostgreSQL 以简单的方式获取所有父项

javascript - 如何将表记录标识符传递给客户端

javascript - JS secret 圣诞老人算法

javascript - 添加输入的电话号码验证

mysql - 如何在不获取 maxBooleanClause 异常的情况下查询具有 98,000 个 id 的 SOLR