在Visual Studio(2015)中调试打开的解决方案/项目时,我想调试(步入)一个位于其中一个引用的程序集中的方法调用。程序集有.pdb(复制本地)和源代码。这个程序集实际上也是我的类lib项目,但不是在当前的解决方案中,而是在另一个解决方案中。
我知道调试此程序集的简单解决方案是将其项目添加到当前解决方案而不是引用它,然后调试体验将是无缝的。但是由于某些原因,在我的情况下这不会太有效,例如,我应该添加许多程序集(数十个),我不想以一个巨大的解决方案结束。
到目前为止我做过/尝试过的事情:
我记得这个调试功能有时会出人意料地自动完成,但现在却没有。
我错过了什么?
答案 0 :(得分:13)
这种经历的最常见原因是:
你排除了1,所以检查另外2:
打开调试 - > Windows->模块并找到您遇到问题的程序集。确保从您期望的位置加载,具有您期望的版本,检查PDB是否已加载。您可能需要尝试加载/重新加载PDB以查看VS是否对其所在的PDB感到满意。
如果PDB匹配,VS应该开始询问源位置。有关源代码的信息是PDB的一部分,因此它会告诉您源代码是否匹配(可以选择允许加载不匹配的源文件,但是您可以获得有趣的调试实现)。
请注意,如果您为RELEASE构建库,它将进行优化,对于某些函数,由于在JIT时间内联或编译时间优化死代码,您将无法调试它们(如{{1分支)。为了获得最佳的实际效果,请确保使用具有匹配PDB的DEBUG程序集,并确保尽早附加"在加载时禁止优化"在调试器选项中。
答案 1 :(得分:1)
我也遇到过这个问题,我尝试过很多提示。然而我发现在我的背景下的问题是:
我删除了它,我可以再次进入dll代码。
答案 2 :(得分:0)
我需要多次这样做,我遵循的简单方法是:
1)确保要使用最新源代码构建要调试的类库
2)将dll和.pdb文件从类库的bin / debug目录复制到应用程序输出目录
3)运行带有调试器的应用程序(如果它是Web应用程序,直接从浏览器访问它,如果它是console / winform / wpf - 只需单击相应的exe)
4)使用特定的进程exe(或Web应用程序的WP3 IIS工作进程)连接visual studio open和类库源代码,并将其设置为!!