3

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

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

4

5 回答 5

6

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

调试符号页面

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

于 2011-02-16T06:57:24.033 回答
2

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

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

于 2011-02-16T07:18:40.873 回答
1

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

查看 Tools->Options->Debugging->Symbols,然后尝试将 PDB 所在的目录添加到那里的对话框中。

于 2011-02-16T06:55:35.403 回答
0

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

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

于 2011-02-16T06:52:43.267 回答
0

删除引用dll并重新添加。

希望能帮助到你。

于 2011-07-21T19:42:36.833 回答