如何调试nodejs的二进制模块?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (70)

我有一个用C ++编写的node.js模块,它为C ++库提供了一些绑定。该库与SIGSEGV崩溃,所以我需要使用GDB进行调试,并找出错误。

我已经有了模块的源代码,./node_modules/somelib/并且如果我转到该文件夹​​并键入npm install该库,那么将被编译,并且可以通过node.js中的require('somelib')使用。我可以将gdb附加到节点并重现错误,但是在我刚刚看到的堆栈跟踪中node_modules/somelib/Release/somelib.node

库是使用编译的node-gyp

  • 问题1:如何加载源代码或将gdb指向源代码?
  • 问题2:如何配置node-gyp以生成调试符号?
提问于
用户回答回答于

我在node-gyp文档中找到了答案。解决方法是用--debug标志调用构建过程。这意味着要调用node-gyp configure --debug和/或node-gyp build --debug。不是一个Release文件Debug夹将被创建一个文件夹。gdb会自动加载源文件。

用户回答回答于

可以将包含该模块源的目录添加到gdb的搜索路径中:

(gdb) directory /path/to/source

要获得node-gyp调试符号,需要安装node-gyp-dbg/dev,或编译-g

扫码关注云+社区

领取腾讯云代金券