当你有.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 文件和源代码进行调试
VS Studio 2010 Symbol Server 不包含源代码