Visual Studio 2010 中的“浏览查找源”

2024-01-02

Visual Studio 2010 中何时启用“浏览查找源”? (见下文)

另外,我想启用它,以便我可以浏览到已经下载的源代码 文件来自http://referencesource.microsoft.com/ http://referencesource.microsoft.com/.

这会很有用,因为微软并不总是发布PDB http://en.wikipedia.org/wiki/Program_database/源代码同时带有最新的补丁。因此,如果我想进入 DateTime,我真的不关心不涉及 DateTime 的最新补丁。我只想浏览我下载的代码http://referencesource.microsoft.com/ http://referencesource.microsoft.com/.

经过一番调查我发现dia2dump这是查看 PDB 文件内容的有用工具。 (在里面C:\Program Files (x86)\Microsoft Visual Studio 10.0\DIA SDK\Samples\DIA2Dump\)

看起来当我看不到像 DateTime 这样的东西的源代码时,使用 .NET Framework 步进,mscorlib.pdb文件实际上被下载了。

但如果你用以下方式查看它的内部dia2dump它不包含源文件映射。换句话说,没用,因为即使你可以像我最初的想法一样浏览到源代码,它也不会起作用,因为没有源文件映射,也没有函数的起始地址,并且缺少很多东西:(

我认为这里的解决方案是使用.NET反射器 http://en.wikipedia.org/wiki/.NET_Reflector专业版或保留虚拟机在手,发布具有源代码的框架,然后禁用更新。


介绍

每当您从 Visual Studio 进行构建时,通常,您还会得到一个PDB http://en.wikipedia.org/wiki/Program_database除了可执行文件之外的文件。您可以在以下位置看到该文件..bin\Debug or ..bin\Release目录。 此 PDB 文件保留到程序集中的源代码行和可执行代码的映射。此外,完成构建的源代码文件的原始位置存储在 PDB 文件中。 这意味着如果您构建一个类库,其中有一个文件位于G:\ClassLibrary\Class1.cs,该路径将被存储在里面ClassLibrary.pdb。 重要的是要记住,如果没有 PDB 文件,就不可能进行源代码单步调试。

现实生活场景

所以,假设我在我的驱动器上进行构建G:\ClassLibrary1,对于类库。

我给你一个ClassLibrary.dll and a ClassLibrary.pdb文件,或者您可以通过从源代码管理中检出它们来获取它们。

您参考的是ClassLibrary.dll在您的项目中,您使用库中的类。

如果您现在尝试从库中单步执行类代码,将会发生以下情况:

Visual Studio 尝试查找 ClassLibrary.pdb 文件在几个地点 http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/05/11/pdb-files-what-every-developer-must-know.aspx

  • 1.1 如果没有找到,则会禁用“浏览查找源” 页。请记住,如果没有有效的 PDB 文件,则无法进行调试。

  • 1.2 如果它确实找到了 PDB 文件,它会查看 PDB 文件内部并发现您正在尝试调试Class1.cs它最初是由

    G:\ClassLibrary1\Class1.cs
    

    并在您的计算机上查找该文件。

  • 1.2.1 如果找到它,它会自动进入代码。

  • 1.2.2 如果没有找到,您会看到以下对话框:

如果按取消,您将看到:“没有可用的源”,并且在这种情况下您将启用“浏览查找源”。

为什么?因为你有一个有效的 PDB 文件,但 Visual Studio 不可能知道你的计算机上有 ClassLibrary1 的源代码,或者你的计算机上是否有它。这就是为什么出现对话框 -> 的原因,以便您可以将 Visual Studio 指向源代码文件的确切位置。

最后的笔记

那么,当您无法浏览查找源时,您会怎么做?

在 Visual Studio 中,打开菜单Debug -> Windows -> 调用堆栈.

您右键单击顶部的调用 Stak 指令,然后选择“符号加载信息”。它将显示 Visual Studio 尝试查找有效 PDB 文件的位置。

  • 1.a 如果您只看到“无法找到或打开 PDB 文件”消息,请将有效的 PDB 文件放在任何这些位置。 (您可能需要向右滚动才能看到消息)停止并再次开始调试。
  • 1.b 如果您看到“PDB 与图像不匹配”消息,则含义如下。 Visual Studio 已找到 PDB 文件,但它用于另一个构建。如果我构建 ClassLibrary1.dll 并将其提供给您,然后我再次构建它而不更改一行代码,然后给您 PDB,然后您尝试 调试classLibrary1.dll您将收到此消息。程序集及其 PDB 文件必须完全来自同一版本,否则您将收到此消息。 (每次构建时,都会使用程序集和 PDB 文件中放入的一些唯一编号来完成此检查)
  • 1.c 您会看到“符号已加载”消息,但“浏览查找”仍然被禁用。这意味着您拥有的 PDB 文件不适合单步调试。您尝试使用的某些 PDB 文件中没有包含单步调试所需的所有信息。我认为您可以从高级构建设置中的某个位置控制它,但我还没有尝试过,因为我希望每次构建时都生成可用的 PDB 文件。如果您尝试调试源代码,经常会发生这种情况.NET http://en.wikipedia.org/wiki/.NET_Framework框架本身和微软并没有为源代码放置可用的PDB文件,而是微软放置了一些不能用于单步调试的PDB文件。这种情况发生的频率比您想象的要高,因为 Microsoft 经常对 .NET Framework 源代码进行更新(修补)。这些更新通过以下方式静默安装到您的计算机上Windows更新 http://en.wikipedia.org/wiki/Windows_Update,您会惊讶地发现昨天您可以调试 .NET Framework 源代码,而今天却不能。他们通常需要一些时间才能为最新代码放置有效的 PDB 文件。在这种情况下你可以使用.NET反射器 http://en.wikipedia.org/wiki/.NET_Reflector专业的逐步调试能力或具有 .NET Framework 版本且包含可用 PDB 文件的虚拟机,并在该计算机上禁用 Windows 更新。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Visual Studio 2010 中的“浏览查找源” 的相关文章

随机推荐

  • Web 配置中的“全局元素‘配置’已被声明”

    我在网络配置中收到烦人的构建警告 我收到了大约 40 条警告Global element element name has already been declared对于我的网络配置中的所有元素 这是针对我在与 MVC 网站相同的解决方案中
  • 当非管理员尝试访问 wp-admin 或 wp-login.php 时,如何将用户重定向到 404 页面未找到错误

    出于安全原因 我试图通过重写链接来限制我的 WordPress 网站管理员和登录面板对非管理员用户的访问 这样如果用户输入http www mysite com wp login php http www mysite com wp log
  • 传入 Apple 推送通知的端口号

    需要在网络上打开哪些网络服务 端口号 传出传入或两者同时打开 iPod touch 才能接收 Apple 推送通知 我知道发送 apns 时要设置的传出端口号 唯一的问题是 在我的学校 几乎每个传出 和传入 端口都被阻止 因此 APN 不起
  • 如何让 mongo 映射器在 Rails 4 中生成 config/mongo.yml 文件

    我正在尝试使用 Mongo Mapper gem 制作一个 Rails 应用程序 我按照 Mongo Mapper 文档中的说明进行操作 链接在这里 Mongo 映射器文档 http mongomapper com documentatio
  • 可排序 + 可拖动演示 - 如何访问放置的项目?

    我有一个可排序的列表 当一个新项目 从可拖动的项目 放入列表中时 我想访问它以对其执行一些操作 这就是我所拥有的 mySortableList sortable receive function event ui alert this is
  • 在 Objective C 类别中使用 Super?

    我想重写 Objective C 类中的一个方法 但我没有源代码 我已经研究过了 看来类别应该允许我这样做 但我想在我的新方法中使用旧方法的结果 使用 super 来获取旧方法的结果 每当我尝试这个时 我的方法都会被调用 但 超级 为零 知
  • Google 脚本,根据上次修改日期删除文件夹中的文件

    我正在尝试创建一个脚本 该脚本每周一次通过共享驱动器运行 并删除过去 90 天内未修改的任何内容 我在这里发现了一些脚本似乎没有按照我的预期工作 我目前拥有的脚本如下 但由于某种原因它似乎不起作用 但似乎应该起作用 它似乎识别了文件 但似乎
  • eval 有什么作用以及为什么它是邪恶的? [复制]

    这个问题在这里已经有答案了 var myString x myObject x 10 value eval myObject myString alert value alert myObject myString 评估是邪恶的 http
  • Excel 多行条件色标

    我有一个电子表格 显示一系列产品的库存数据 我每天都有一个专栏 其中的值显示我的库存水平将如何随着时间的推移而减少 我想使用色标来轻松查看某些产品的库存何时会变少 我的量表的最小值 中值和最大值基于不同列中的值 并且每个产品的值都不同 根据
  • 使用 java 获取便携式设备

    我正在尝试访问设备中的一些文件 具有 Windows CE 其中的应用程序 显示为便携式设备在 windows 7 中使用 java applet 我的设备路径是这样的 Computer Attari s Device myfile txt
  • Doctest 无法识别 __future__.division

    我写了以下文档测试x doctest This is something gt gt gt x 3 4 foo bar something else gt gt gt from future import division gt gt gt
  • 定时器和线程的问题

    我是一个通过实例学习的 C 程序员 水平不是很先进 这就是为什么这个问题完全难住了我 无论互联网上有多少信息 我本质上是在创建一个程序 该程序在计时器上重复轮询网站以获取一些信息 在此过程中 将创建一个 WebBrowser 控件来导航到信
  • Apple 登录时出现错误“Invalid_client”firebase android

    我们为 Apple 所做的一切 登录 在 Firebase 中 我们设置 service id keyID 私钥 团队 ID 在 Android 代码中 我们做了与文档相同的操作 尽管如此 我们仍然面临苹果的问题 以无效客户端身份登录 经过
  • 检查: git rebase 是否完成?

    这是 git rebase 的替代方案 https stackoverflow com questions 39603553 alternative to git rebase 39605048 noredirect 1 comment66
  • 在 Rust 测试中,如何使用 NEAR 协议检查帐户的状态(帐户余额)?

    在 Rust 测试中 如何检查帐户的状态 帐户余额 例如 我有这个辅助函数 fn set context account index usize is view bool deposit Amount let context VMConte
  • Icefaces 3.0.1 FileEntry:FileEntryListener 从未被调用

    1 1 IceFaces 3 0 1 和 JSF 2 1 并尝试与 ace fileentry 一起使用 我不明白为什么监听者永远不会被调用 甚至 IDE 也会向我发送警告 pruebaBean sampleListener 是未知属性 这
  • ASP.NET MVC 如何指定视图页面驻留在哪个文件夹?

    默认情况下 ASP NET MVC 引擎在以下文件夹中搜索视图页面 Views 控制器名称 动作 aspx Views Shared 动作 aspx 不过 我想将一些视图页面如下所示 Views 命名空间 Controller Name 动
  • com.mongodb.MongoTimeoutException:等待连接时 10000 毫秒后超时

    我以为这个问题已经被问过好几次了 但我不得不再次问一遍 因为为这个问题提供的解决方案并没有给我一个准确的答案来摆脱这个该死的错误 I use mongo java driver 2 12 4 and mongo jar当我尝试将文档插入数据
  • 布尔属性的单选按钮

    我有一个简单的布尔属性valid在我的对象中document并需要将其绑定到无线电输入 这是我到目前为止所拥有的
  • Visual Studio 2010 中的“浏览查找源”

    Visual Studio 2010 中何时启用 浏览查找源 见下文 另外 我想启用它 以便我可以浏览到已经下载的源代码 文件来自http referencesource microsoft com http referencesource