积极答复者
vs2008中.net framework符号加载的诡异问题。

问题
-
遇到恶心的问题,求助……
想参考一下.net framework类库的一些源码,就打开了.net源码单步执行选项(仅我的代码关闭),符号文件位置(.pdb)之前也设置为符号服务器地址:http://referencesource.microsoft.com/symbols。
在这次查看.net框架源码之前,已经这样用过很多次了,都没问题。
然后就开始单步调试(F11),结果有这几种情况:
1.一到可以进入.net类库源码的地方(比如string的构造函数),程序就卡到那里了,所有的状态、监视、输出等窗口都空白了。可以关闭调试。
2.和开启.net源码单步调试前根本没有不同(是以前进入过的string与List<T>类)。
3.手动在调用堆栈窗口选定进入某类,显示“没有可用于当前位置的源代码。”。
具体情况:
环境:windows vista,.net framework 3.5 sp1,visual studio 2008 Professional sp1
我建立的是CSharp的控制台程序,用了
List<int> l = new List<int>();
l.Add(1);
这样的代码去查看List类。
模块窗口显示各个dll的符号也都加载了,除了mscorlib.resources.dll。
比如:(从窗口里复制出来的)
System.dll C:\Windows\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll 是 N/A 已加载符号。 D:\symbols\System.pdb\2EE070FC24024C3386DDCBB1297806731\System.pdb 4 2.0.50727.3053 (netfxsp.050727-3000) ......
进入调试,发现错误窗口中有输出(但还能运行),显示SystemEvents.cs中有错。进入d:\symbols\src\下查看,只有个...../SystemEvents.cs,并且还不是完全正确的,结尾少了个大括号。
还需要什么信息我再补充。
另:
前一阵子因为弄出来了个 某个Windows事件相关的服务 无法启动的错误,进行过系统还原,这个应该不会有影响吧……
学习
答案
-
你好!
你有试过新建一个C#的控制台程序吗?是不是也有这种情况?
如果同样也会发生这种情况的话,你可以试着在“运行”窗口中跑一下以下这些命令:
- devenv.exe /resetsettings:排除由于IDE的设置产生的问题
- devenv.exe /safemode:排除由于第三方插件或者软件引起问题的可能性
希望对你有所帮助。
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.- 已标记为答案 YiChun Chen 2010年2月18日 9:09
全部回复
-
你好!
你有试过新建一个C#的控制台程序吗?是不是也有这种情况?
如果同样也会发生这种情况的话,你可以试着在“运行”窗口中跑一下以下这些命令:
- devenv.exe /resetsettings:排除由于IDE的设置产生的问题
- devenv.exe /safemode:排除由于第三方插件或者软件引起问题的可能性
希望对你有所帮助。
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.- 已标记为答案 YiChun Chen 2010年2月18日 9:09
-
你好!感谢你的答复。
尝试了新建工程,也尝试了restsettings,safemode,情况依旧如此。
查看模块符号加载信息,与之前一样,如下:
C:\Windows\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.pdb: 无法查找或打开 PDB 文件。
D:\Microsoft Visual Studio 9.0\Common7\IDE\mscorlib.pdb: 无法查找或打开 PDB 文件。
D:\Symbols\SinglePdbs\symbols\dll\mscorlib.pdb: 无法查找或打开 PDB 文件。
D:\Symbols\SinglePdbs\dll\mscorlib.pdb: 无法查找或打开 PDB 文件。
D:\Symbols\SinglePdbs\mscorlib.pdb: 无法查找或打开 PDB 文件。
D:\Symbols\MicrosoftPublicSymbols\mscorlib.pdb\5E981EB04B4E45CC926C36730201D7521\mscorlib.pdb: 已加载符号。
看起来应该是加在上了,但还是提示“没有可用于当前位置的源代码”。在调用堆栈窗口中,右键点“> mscorlib.dll!System.Collections.Generic.List<int>.Add(int item = 1) + 0x9 字节 ”以后,只有转到反汇编,转到源代码是灰的。
会不会是安装.net framework 3.5 sp1的问题?貌似在这之前是可以的,之后也记不清楚用过了没有。
比较郁闷。
或者哪里有直接可以查看的源码包下载?.cs格式的。
学习 -
说实话,因为你的系统是做过还原的,所以有点难讲这个问题出在哪里了。
不过你可以试一下重装一下.NET Framework 3.5,看下行不行。
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
Welcome to the All-In-One Code Framework! If you have any feedback, please tell us. -
客气了,如果有问题,我们再继续看看还有没有其他的解决方法。
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.