当你有.pdb文件和VS2010的C++源代码时,如何进入dll的功能?

Posted

技术标签:

【中文标题】当你有.pdb文件和VS2010的C++源代码时,如何进入dll的功能?【英文标题】:How to step into function of a dll when you have the .pdb file and the C++ source code with VS2010? 【发布时间】:2013-04-25 14:18:25 【问题描述】:

我正在尝试调试我编写的由 Visual Studio 2010 中的应用程序使用的动态库。我可以进入直到我的 dll 的函数,但我无法更深入地查看源代码。如果我打开 Disassembly 窗口,我可以进入 ASM 代码,但我看不到源代码或任何符号。

我已经构建了一个 .dll 和一个导入 .lib。与 dll 关联的 .pdb (/Zi) 文件也已构建(使用/DEBUG)。优化被禁用 (/Od)。

我的应用程序将导入库与 #pragma comment(lib, "myImport.lib") 链接,因为该应用程序有一个我无法自己配置的构建工具。

我的应用程序在调试中运行,在调试器的 Modules 中,我可以看到我的 dll 以及符号都已加载。

我还检查了选项>调试>常规启用我的代码选项被禁用。

如何强制VS2010进入我的dll的功能?

【问题讨论】:

你的项目知道dll的pdb文件的位置吗? 【参考方案1】:

我们有一个稍微不同的设置,我们启动另一个我们没有源代码的应用程序,然后从该应用程序加载我们自己构建的 dll。要对其进行调试,我们使用 Visual Studio 命令 Debug / Attach to Process... 也许此命令可以引导您成功调试 dll 的源代码。

【讨论】:

【参考方案2】:

正如您所料,这是编译不兼容。该 dll 是为 CLR 运行时编译的 (/clr)。我猜是因为VS2010的默认配置。因为我删除了这个选项,所以一切都可以像往常一样调试了。

【讨论】:

以上是关于当你有.pdb文件和VS2010的C++源代码时,如何进入dll的功能?的主要内容,如果未能解决你的问题,请参考以下文章

VS2010 C++ 不包含 .pdb 的路径是我根据 dumpbin 编译的 .dlls

在 VS C++ 中使用 dll、pdb 文件和源代码进行调试

VSPerf VS2010 和其他分析工具没有拾取 pdb

VS Studio 2010 Symbol Server 不包含源代码

VS2012 每次编译程序都会出现3个无法查找或打开 PDB 文件。

使用vs2010调试时opencv2.2 库函数的源代码看不到