如何单步执行动态加载的 DLL 的源代码?我有一个 SLN,它是通过将 BIN 文件加载到 Visual Studio 2008 中自动创建的。它使用命令行界面功能,在这个命令行上,我可以发出命令来加载 DLL。我加载的 DLL 是从源代码构建的。所以我应该能够逐步完成这个源代码。
我是否需要以某种方式加载 mdb 或以某种方式告诉集成开发环境如何处理源代码?目前,我不能在源代码中放置任何断点。
如何单步执行动态加载的 DLL 的源代码?我有一个 SLN,它是通过将 BIN 文件加载到 Visual Studio 2008 中自动创建的。它使用命令行界面功能,在这个命令行上,我可以发出命令来加载 DLL。我加载的 DLL 是从源代码构建的。所以我应该能够逐步完成这个源代码。
我是否需要以某种方式加载 mdb 或以某种方式告诉集成开发环境如何处理源代码?目前,我不能在源代码中放置任何断点。
如果您构建此 dll,那么您应该能够构建调试符号,并将调试器指向这些文件
您必须确保 pdb 文件是针对加载的完全相同的二进制文件构建的,否则将找不到符号,因为它们不匹配。
如果动态加载 DLL(例如,通过 C++ 中的 LoadLibrary),则在加载 DLL 之前不会加载符号。在加载 DLL 的调用之后中断,然后加载 DLL 源并在其中设置断点。加载 DLL 的符号后,您将在 Visual Studio的“输出”窗格中看到一条消息。
您还可以通过在调试器选项中指定将加载 DLL 的 EXE 来调试 DLL 解决方案。然后Visual Studio就会知道EXE很可能会加载DLL并提前加载符号。
您可能需要告诉 MSVC 在哪里可以找到这些 DLL 的 PDB 文件。PDB 允许调试器查找哪一行源代码与哪个汇编字节匹配。
查看 Tools->Options->Debugging->Symbols,然后尝试将 PDB 所在的目录添加到那里的对话框中。
如果 DLL 已经在 GAC 中,那么您的断点可能不起作用。您可能必须从 GAC 中删除删除引用并尝试。
你检查了吗?http://msdn.microsoft.com/en-us/library/c91k1xcf%28v=vs.80%29.aspx
删除引用dll并重新添加。
希望能帮助到你。