如何单步执行动态加载的DLL的源代码?

时间:2011-02-16 06:49:36

标签: c# c++ visual-studio visual-studio-2008 pdb-files

如何逐步浏览动态加载的DLL的源代码? 我有一个SLN,它是通过将BIN文件加载到Visual Studio 2008中自动创建的。它使用命令行界面功能,在此命令行上,我可以给出一个加载DLL的命令。我加载的DLL是从源代码构建的。所以我应该能够逐步完成这个源代码。

我是否需要以某种方式加载mdb或以某种方式告诉集成开发环境如何处理源代码?目前,我不能在源代码中添加任何断点。

5 个答案:

答案 0 :(得分:6)

如果你构建了这个dll,那么你应该能够构建调试符号,并将调试器指向这些文件

Debugging symbols page

您必须确保pdb文件是根据加载的完全相同的二进制文件构建的,否则将找不到符号,因为它们不匹配。

答案 1 :(得分:2)

如果动态加载DLL(例如,通过C ++中的LoadLibrary),则在加载DLL之前不会加载符号。在加载DLL的调用之后中断,然后加载DLL源并在其中设置断点。当加载DLL的符号时,您将在Visual Studio的输出窗格中看到一条消息。

您还可以通过指定将在调试器选项中加载DLL的EXE来调试DLL解决方案。然后Visual Studio将知道EXE可能会加载DLL并提前加载符号。

答案 2 :(得分:1)

您可能需要告诉MSVC在哪里找到这些DLL的PDB文件。 PDB允许调试器查找哪一行源代码与哪个汇编字节一起使用。

在工具 - >选项 - >调试 - >符号下查看,然后尝试将PDB所在的目录添加到对话框中。

答案 3 :(得分:0)

如果DLL已经在GAC中,那么您的断点可能无法正常工作。您可能必须删除从GAC中删除引用并尝试。

你检查过这个吗? http://msdn.microsoft.com/en-us/library/c91k1xcf%28v=vs.80%29.aspx

答案 4 :(得分:0)

删除引用dll并重新添加。

希望它有所帮助。