gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 14:04:57 25 4
gpt4 key购买 nike

我有一套 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com