【问题标题】:How can I debug this line of code in Visual Studio?如何在 Visual Studio 中调试这行代码?
【发布时间】:2009-02-15 04:08:37
【问题描述】:

我在VS2008中有下面这行代码。

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

我想调试这个GetVirtualpath(..) 方法.. 看看它想做什么。

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

我做的是

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

在调试模式下编译,在 about 的那一行放置一个断点并调试运行。当我上线时,我从 MS Symbol 服务器 手动加载System.Web.Routing(..)。这有效(pdb 是在本地下载的),当我进入这一行时,我转到了一些 Dissassemler 代码:(

谁能看出我做错了什么?

【问题讨论】:

  • 添加visual studio 2008标签...
  • 嗯,有趣的技术问题..让我们看看谁在问.. O_o 现在我又忘记了问题是什么??

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


【解决方案1】:

符号文件被下载并不意味着它的源代码可用,pdb 也需要源索引。

来自Scott Guthrie's announcement

我们将从提供源代码开始 代码(带有源文件 cmets 包括)用于 .NET 基类 库(系统、System.IO、 System.Collections, 系统配置, System.Threading,System.Net, 系统.安全,系统.运行时, System.Text 等)、ASP.NET (System.Web)、Windows 窗体 (System.Windows.Forms)、ADO.NET (System.Data)、XML (System.Xml) 和 WPF(系统。Windows)。届时我们将 在几个月内添加更多库 提前(包括 WCF、工作流和 林克)。源代码将是 根据 Microsoft 参考发布 许可证 (MS-RL)。

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

但是,您可以download the MVC Source,然后您应该可以使用您下载的 pdb 来处理该来源。

【讨论】:

  • pdb 和 source 有什么区别?我认为 pdb 是源 + 额外信息?
  • pdb 包含调试信息,例如函数原型,这意味着您将获得更准确的堆栈跟踪和局部变量名称等。它们可以用有关如何获取的信息进行注释/download 源,这是下载参考源的方式。
【解决方案2】:

我看到有人因为这样说已经被修改了,但是......

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

我们中的许多在 .NET 前沿工作的人需要使用它,因为通常没有其他快速方法,而且对于那些没有 MVP 或 Microsoft 端连接的人来说,它通常是只有方法可以了解“内幕”。

【讨论】:

    【解决方案3】:

    我有点惊讶它为此下载了一个符号文件;上次我查看时,只有框架的一小部分(主要是 2.0)的符号。您目前对此代码有疑问吗?如果是这样,请发布异常/意外行为的详细信息。如果您只是好奇,那么要么 a:阅读 documentation,要么 b:也许窥探一下 reflector(警告:“IANAL”)。

    【讨论】:

    • 嗨,马克。这是来自 MS 的本地符号缓存内容: ....MicrosoftPublicSymbols\System.Web.Routing.pdb\3DB015207A024718BF08F947E4A505941\System.Web.Routing.pdb (大小为 27 KB。)因为我有这个文件,我认为我应该能够“踏入”它。我正在尝试测试符号调试。
    【解决方案4】:

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

    使用 .NET Reflector 检查函数的作用。

    【讨论】:

    • 嗯...微软已经为他们的一些 .NET 框架发布了一些符号/pdb 文件。我的印象是 System.Web.Routing 就是其中之一......但我就是无法让它工作。
    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 2020-07-16
    • 2018-07-03
    • 2015-08-04
    • 2016-08-19
    • 1970-01-01
    • 2022-06-19
    • 1970-01-01
    相关资源
    最近更新 更多