Visual studio 符号、visual studio、版本和符号

Visual studio 符号、visual studio、版本和符号,visual-studio,.net-4.5,debug-symbols,Visual Studio,.net 4.5,Debug Symbols,我在visual studio(c#)中有一个使用.net 4.5的项目,我需要调试框架源代码,以了解多线程死锁中发生的情况。 我发现,在那里可以下载调试符号,我看到有一个.NET4.5更新1。好的,我在microsoft.com上搜索更新,安装它,重新启动电脑,然后安装所述调试符号并配置visual studio以使用它们。 问题:当我调试项目并尝试加载符号(如mscorlib)时,VisualStudio表示文件夹中没有匹配的符号。 我看到了:,其中据说是取消安装windows更新,但我只安

我在visual studio(c#)中有一个使用.net 4.5的项目,我需要调试框架源代码,以了解多线程死锁中发生的情况。

我发现,在那里可以下载调试符号,我看到有一个.NET4.5更新1。好的,我在microsoft.com上搜索更新,安装它,重新启动电脑,然后安装所述调试符号并配置visual studio以使用它们。

问题:当我调试项目并尝试加载符号(如mscorlib)时,VisualStudio表示文件夹中没有匹配的符号。
我看到了:,其中据说是取消安装windows更新,但我只安装了KB2707250(VS2012更新1)、KB2504637(alters System.Net assembly)和KB2750149(KB2750149.Net 4.5更新1)——没有其他更新。
因此,程序集报告的版本是v4.0.30319.18033和v4.0.30319.17929,据我所知,适用的是v4.5和v4.5更新1

事实上,我从referencesource.microsoft.com下载了.net 4.5和.net 4.5更新1的调试符号,考虑到我的系统上没有任何相关更新,它们应该与安装的框架相对应。
但显然,18个引用程序集中只有5个是这样(项目除外)

如何收集其他信息?
如何使VisualStudio和调试符号愉快地一起工作

最后我可以看到源代码,这并不复杂,但我不知道字段和属性中有什么值

更新:
我已经能够获得正确的pdb({3303BFEA-79E7-40C2-A2A8-34C1C816E082}),但它仍然缺少源代码,因此没有用处。在这种情况下,Srctool似乎也没有什么用处

现在有趣的是:我有来源,我有pdb,但它们似乎不能一起使用。不知道,如果可能的话,也许我会考虑重新编译mscorlib。
->不,显然答案是否定的。

我想到的其他事情:是否有.net framework的检查/调试版本?安装TFS会有帮助吗?(我读了一些关于符号服务器的文章,没有进一步研究)问题是,为什么需要.NET符号和源代码来排除Visual Studio内部的死锁?在这种情况下,WinDbg更有效,如果必须的话,我会尝试使用WinDbg,但我更喜欢其他方法。我想我知道死锁发生在哪里,我不知道100%是什么时候,因为我不知道线程在等待什么对象。现在,我正在复制挂起在项目中的方法,以便调试它们。考虑到我必须复制内部方法,我不知道它是否会成功。无论如何,这不是我想到的唯一可能性,但可能是最简单的(除了拥有mscorlib.dll的完整pdb)。WinDbg转储分析的艺术在于,您可以在死锁发生时对进程进行快照,然后分析它挂起的原因。在这种情况下,更明显的是要知道线程正在等待什么对象。这是一种完全不同的故障排除方法,对于崩溃和挂起问题非常有效。我几乎看不出“复制方法”能带来什么好处。据我所知,你也可以用VisualStudio加载转储,但这超出了重点。我知道如何以足够的再现性导致死锁,并且使用VisualStudio我可以检查源代码,轻松获得字段/方法的名称和所有反射。当然,它遗漏了调用堆栈中的一些函数,但我几乎没有使用windbg,如果我记得清楚的话,我还无法加载SOS dll进行托管调试。