如何调试一个被引用的DLL(有PDB)如何调试一个被引用的DLL(有PDB)(How to debu

2019-06-14 12:55发布

我的问题的关注与Visual Studio 2008,但我想这应该是在VS2005相同

我有两个解决方案,在我的工作区,说A和B.

方案A是一个老项目,我前一段时间完成编码。 在溶液B,我需要使用一些类从解决方案A.要做到这一点,我引用添加到项目之一的溶液A的dll

问题是,当我尝试调试。 我希望能够步入一个的代码。 视觉工作室不能加载代码这些类(“有可用于当前位置没有源代码”。)和I只能查看拆卸,这是没有用的。

我知道调试类从溶液中的唯一的办法是通过运行解决方案B,分离所有进程(在调试菜单项),并从溶液A.附加过程

然而,这是非常不方便,我只能调试A或B的一次。

有没有一种办法,让步入引用的DLL(为此我做的源代码)的代码?


解决方案:我的错误是,我认为,一个项目只能是一个单一的解决方案的一部分。 事实上,一个项目可以是任意数量的解决方案的一部分。
当你需要引用旧的项目,你只需简单地把项目添加到解决方案。 这是由做对点击Solution Explorer中的新解决方案>添加>现有项目。
然后,你就可以添加项目引用。 正如其他人写的,你应该完全避免使用自己的代码DLL引用(或其他代码,您可能需要更改和调试)。

一个很好的参考解决方案如何设计应该可以发现MSDN 。

Answer 1:

如果你有一个项目的参考,就应该立即开始工作。

如果它是一个文件 (DLL)的参考,您需要调试符号(以下简称“PDB”文件)是在同一文件夹中的DLL。 检查您的项目正在生成调试符号(项目属性=>生成=>高级=>输出/调试信息=全); 如果您有复制该dll,把PDB它。

您也可以直接在IDE中加载的符号,如果你不想复制任何文件,但它是更多的工作。

最简单的方法是使用项目引用!



Answer 2:

我遇到过同样的问题。 他是我发现:

1)确保所有项目都使用相同的框架(这是关键!)

2)在工具/选项>调试>常规确保“启用仅我的代码(仅限托管)未选中

3)在工具/选项>调试>符号清除任何缓存的符号,勾去掉,并删除所有文件夹位置“符号文件(.PDB)位置”列表框下,除了默认的“Microsoft符号服务器”,但还是勾去掉它。 此外,在文本框中“在这个目录缓存符号”删除任何静态路径。 点击“清空缓存符号”按钮。 最后,确保“只有指定模块”单选按钮被选中。

4)所有项目的构建/配置管理器菜单确保配置处于调试模式。



Answer 3:

还有一点要记住,一定引用的DLL没有安装在GAC。 经过测试,我安装我的DLL到GAC做系统级测试。 后来,当我不得不再次调试我的代码,我不能踏进引用的程序,直到我从GAC删除它们。



Answer 4:

当你想设置一个被引用的DLL的源代码断点,首先确保您有相关的可用PDB文件。 然后,你可以打开相关的源代码文件和设置一个断点在那边。 源文件并不需要是你的解决方案的一部分。 正如在解释如何设置中引用的代码在Visual Studio中断点?

您可以查看通过断点窗口中的断点,通过调试可用 - >窗口 - >断点。

这种方法有,你不需要一个现有的项目添加到您的解决方案只是用于调试目的,离开它为我节省了大量的编译时间的优势。 显然,构建一个解决方案,在它只有一个项目比建设有很多很多的解决方案快得多。



Answer 5:

第1步:进入工具- >选项- >调试

第2步:取消选中启用仅我的代码

第3步:取消选中需要的源文件正好与原来的版本相匹配

步骤4:在性能和操作步骤不选



Answer 6:

我并不想在我的一些解决方案的外部类库项目,所以我踏进我以不同的方式消耗组件。

我的解决方案有一个包含从其他项目我自己的DLL“共同组件”目录。 我还引用的DLL有其附带PDB文件进行调试。

为了调试和设置断点,我设置在消费应用程序的源断点其中我打电话从组件的方法或构造函数,然后步入(F11)的方法/构造函数调用。

调试器将加载VS和装配的内部新的断点集的源文件可以在这一点上进行设置。

它不是直线前进,但如果你不希望包括一个新的项目引用,只是希望引用共享组件,而不是工作。



Answer 7:

我有*.pdb在同一个文件夹中的文件和使用的选项阿瑞丹姆 ,但它仍然没有奏效。 原来我需要能够启用原生代码调试 ,可根据项目属性>调试中找到。



Answer 8:

它必须工作。 我用来调试在同一时间一个.exe文件,一个dll! 我的建议是1)把DLL的路径在你的B类项目,2)在调试一个项目3)控制然后编译在A DLL和德PDB文件.... 4)后路径指向你开始调试B类项目,如果一切正常,你就可以在这两个项目调试!



文章来源: How to debug a referenced dll (having pdb)