如何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:如何configuration
node-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-gyp
debugging符号,请安装node-gyp-dbg/dev
或等价物,或使用-g
编译