VS 2012 C ++:我可以使用源而不是符号进行调试吗?

时间:2013-02-18 20:57:54

标签: c++ visual-studio visual-studio-debugging

我目前正在为NodeJS编写原生扩展。这基本上是NodeJS在您要求时加载的DLL。

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

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

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

更新2:切向,但是对于任何专门调试NodeJS的人来说,Node实际上都会发送一个pdb,可以在http://nodejs.org/dist/v0.8.22/node.pdb处找到(用你正在寻找的版本替换版本号)。

1 个答案:

答案 0 :(得分:1)

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

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

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

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