如何在Visual Studio中调试此行代码?

时间:2009-02-15 04:08:38

标签: .net visual-studio-2008 debugging debug-symbols symbol-server

我在VS2008中有以下代码行。

    VirtualPathData virtualPathData = 
        RouteTable.Routes.GetVirtualPath(_viewContext.RequestContext, 
        "Home", 
        pageLinkValueDictionary);

我希望调试这个GetVirtualpath(..)方法..看看它正在尝试做什么。

我假设我需要从MS符号服务器中获取符号。

我做的是

  • 关闭仅启用我的代码
  • 开启启用源服务器支持
  • 调试时显示 Modules 窗口(手动加载正确的模块)

在调试模式下编译,在该行上设置断点并调试运行。当我点击该行时,我从 MS Symbol服务器手动加载System.Web.Routing(..)。这工作(pdb在本地下载),当我踏入INTO这一行时,我转到一些Dissassemler代码:(

谁能看到我做错了什么?

4 个答案:

答案 0 :(得分:3)

下载符号文件并不意味着可以使用源代码,pdb也需要进行源索引。

来自Scott Guthrie's announcement

  

我们首先提供来源   代码(包含源文件注释   包括)用于.NET基类   图书馆(System,System.IO,   System.Collections中,   系统配置,   System.Threading,System.Net,   System.Security,System.Runtime,   System.Text等),ASP.NET   (System.Web),Windows窗体   (System.Windows.Forms),ADO.NET   (System.Data),XML(System.Xml)和   WPF(System.Windows)。我们会的   在几个月内添加更多的库   未来(包括WCF,工作流程和   LINQ)。源代码将是   在Microsoft Reference下发布   许可证(MS-RL)。

这里似乎没有包含System.Web.Routing。

然而,您可以download the MVC Source,然后您应该能够使用您针对该来源下载的pdbs。

答案 1 :(得分:1)

我看到有人因为说出来而已经改变了,但是......

您似乎无法获得正在发生的事情的源级视图,但如果您确实需要回答为什么某些内容可能无法正常工作(并且StackOverflow无法帮助),请使用Reflector.NET从编译的程序集中获取C#代码(dll或exe)是一个非常好的选择。该工具非常易于使用,适用于任何有经验的.NET开发人员,可以提供一些非常好的见解。

我们中许多在.NET 的前沿工作的人需要来使用它,因为通常没有其他快速方法,对于那些没有MVP或Microsoft端连接的人来说,它通常是获取'内幕故事'的方式。

答案 2 :(得分:0)

我为此下载了一个符号文件有点惊讶;上次我看,框架的一个小子集(主要是2.0)只有符号。您目前在使用此代码时遇到问题吗?如果是,请发布异常/意外行为的详细信息。如果你只是好奇,那么要么a:阅读documentation,或者b:或许拥有reflector的窥探(警告:“IANAL”)。

答案 3 :(得分:-3)

看起来你在谈论.NET,所以它实际上是你看到的IL字节代码。我不认为Microsoft发布带有.NET源代码的符号,因此VS无法帮助您。

使用.NET Reflector检查函数的功能。