如何debuggingnodejs的二进制模块?

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

我已经在./node_modules/somelib/模块的源代码,如果我去的文件夹,并inputnpm install该库编译,可以通过node.js require('somelib')使用。 我可以将gdb附加到节点并重现错误,但是在node_modules/somelib/Release/somelib.node中,我只能看到node_modules/somelib/Release/somelib.node

我不确定这是否重要,但是使用node-gyp编译库。

  • 问题1:如何加载源代码或将gdb指向源代码?
  • 问题2:如何configurationnode-gyp来生成debugging符号?

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

你可以将包含模块源的目录添加到gdb的searchpath中:

 (gdb) directory /path/to/source 

请参阅: http : //sourceware.org/gdb/onlinedocs/gdb/Source-Path.html

另外,要获得node-gypdebugging符号,请安装node-gyp-dbg/dev或等价物,或使用-g编译