0

我目前正在为 NodeJS 编写本机扩展。这基本上是一个 dll,当你请求它时 NodeJS 会加载它。

我将 VS2012 附加到节点进程。我想调试执行加载的 Node 代码。

我有 node 的 .cc 和 .h 文件,但是我找不到 .pdb 文件。如何在 Node 源中设置断点?

更新:我确实有一个 node.lib 文件。那可以代替pdb吗?

更新 2:切线,但是对于专门调试 NodeJS 的任何人,Node 实际上确实提供了一个 pdb,可在http://nodejs.org/dist/v0.8.22/node.pdb获得(将版本号替换为您正在寻找的任何版本为了)。

4

1 回答 1

1

如果无法将实际源代码与汇编代码相关联,就无法从源代码进行调试。您需要一个 pdb 文件。

可以这样想:任何编译器都可以生成代码,即使 VS2012 编译器生成了代码,VS 也无法对所有代码生成阶段进行逆向工程,以了解特定汇编命令属于哪个源代码行。而通过内联等,它甚至给任务增加了更多的难度。

因此,任何调试器都无法在没有调试符号的情况下进行调试,将汇编语义反转为更高级别的语言语义是不可能的(在编译过程中会丢失结构信息)。否则,静态分析工具将很容易编写。

编辑:.lib 文件也不包含调试信息,只是链接它的必要信息。所以你也倒霉了。

于 2013-02-18T21:05:40.370 回答