问题标签 [symbol-server]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
903 浏览

.net - 如何在 Visual Studio 中调试这行代码?

我在 VS2008 中有以下代码行。

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

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

我所做的是

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

在调试模式下编译,在该行设置断点并调试运行。当我上线时,我System.Web.Routing(..)MS Symbol server手动加载。这有效(pdb 在本地下载),当我进入这一行时,我转到了一些 Dissassemler 代码:(

谁能看到我做错了什么?

0 投票
4 回答
20095 浏览

windows - 如何更改年龄不匹配的 PDB 以正确匹配?

我们的夜间构建过程被破坏了很长时间,以至于它生成的 PDB 文件与相应的图像文件的年龄相差几个小时。我已经解决了这个问题。

但是,我想开始使用符号服务器,但由于必须使用这些年龄不匹配的 pdb 文件而不能。我通过在 windbg 中使用 .symopt +0x40 方法解决了这个问题。这意味着我必须手动组织我所有的 pdb 文件,并且经过多年的发布,这些文件加起来。

我正在寻找一种方法来修改 windbg 用来标记 pdb 年龄的机制,并强制它与我的图像文件匹配。实用程序ChkMatch执行类似的操作,但用于 pdb 签名。开发人员在页面“ChkMatch 能够使可执行文件和 PDB 文件匹配,如果它们具有不同的签名但相同的年龄(有关 PDB 签名和年龄的更多信息,请参阅本文)。如果年龄不同,该工具无法使文件匹配。”

我查看了 hexeditor 内部,甚至找到了与年龄相对应的位,但它必须在内部提取更多技巧,因为我无法让它工作。

有任何想法吗?

编辑:我不知道这是否有帮助,但在我的特殊情况下,年龄差异是由不必要的重新链接 dll 引起的,这也会重新创建 PDB 文件。但是,我们的构建过程是存储原始 dll(重新链接之前)和重新链接之后的 pdb。我想过以某种方式手动重现这种情况。意思是,强制重新链接 DLL,但在两种情况下都保存 pdb。然后我可以对这两个文件进行二进制比较,看看它们是如何变化的。也许运行某种自动执行此操作的修补软件?通过查看我的控制案例中究竟发生了什么变化,也许我可以对保存在我公司构建过程中的 DLL 和 PDB 做同样的事情?

编辑:我想通了!!!!感谢对第一个答案的评论之一,我查看了“未记录的 Windows 2000 秘密:程序员食谱”一书的 pdf 链接。作者详细介绍了 pdb 文件格式。正如我之前所说,我已经将 pdb 加载到十六进制编辑器中并翻转了一些位,似乎我进行了年龄/签名匹配,但它不起作用。好吧,在使用 W2k 机密书中的实用程序将 pdb“爆炸”到包含的流中之后,我发现它们在流 3 中隐藏了另一个对年龄的引用!!!!!!!!!!一旦我也翻转了那个,它就在windbg中匹配了。这是巨大的!!!!非常感谢....符号服务器我来了!

0 投票
5 回答
4530 浏览

.net - 符号服务器说明

这个答案中,用户建议使用符号服务器。

谁能解释他们如何工作以及如何使用 TFS 2008 进行设置(如果可能)?

0 投票
2 回答
5372 浏览

visual-studio-2008 - Visual Studio 不缓存 Microsoft 符号服务器缓存未命中?

我将 Microsoft Symbol Server 与 Visual Studio 2008 一起使用,它运行良好。不幸的是,当公共符号服务器不包含符号时​​,超时需要一段时间,并且每次我启动项目进行调试时,Visual Studio 都会尝试重新加载相同的缺失符号。

有什么方法可以让(或欺骗)Visual Studio 记住“未命中”并且暂时不再打扰?

0 投票
5 回答
4472 浏览

hash - Microsoft 符号服务器/本地缓存哈希算法

我试图弄清楚 Microsoft 符号本地缓存目录使用什么散列算法。

例如,本地缓存可以如下所示

文件与其调试数据库之间似乎存在某种对应关系。除此之外,我无法弄清楚这些(大概)十六进制字符串文件夹的名称是如何生成的。

其中一些是 9 位数字,一些是 13 位数字,还有一些是 33 位数字。它看起来像一个实际的活动文件(由于某种原因存储在符号缓存中)具有 13 位哈希,而其(几乎相似)调试数据库获得 9 位哈希。一些调试数据库得到一个 13 位的哈希值;无法弄清楚是什么让这些特别,尽管它们没有相应的实时文件。

我已经尝试使用我所知道的每种散列算法(其中 39 个)对文件进行散列,并且没有以任何方式匹配(直接向上、反向、交替 endian'd 等)

有任何想法吗?

更新 我想我终于找到了。从符号存储格式

SymStore 使用文件系统本身作为数据库。它创建了一个大型目录树,目录名称基于符号文件时间戳、签名、年龄和其他数据等内容。

编辑 当,不幸的是它只提到目录名称是从各个方面派生的(我猜不是一个哈希),但没有确切说明如何。搜索仍在继续…… :-(

0 投票
3 回答
3167 浏览

windbg - WinDbg,显示加载模块的符号服务器路径(即使符号没有加载)?

WinDbg 有没有办法在不使用 DbgEng API 的情况下为所有加载的模块显示符号服务器路径(即PdbSig70 和 PdbAge )?

我知道

对已加载符号的模块执行此操作。我想知道未加载符号的这些路径,以便诊断问题。任何人都知道这是否可能无需使用 DbgEng API?

编辑:

我也意识到你可以使用

获取有关符号加载的错误消息。虽然这确实有有用的输出,但它与我想要的其他输出交错并且不像'lml'那样简单明了

0 投票
3 回答
2428 浏览

.net - 设置符号服务器能给我带来什么?

我通读了这篇文章:设置符号服务器,其中详细介绍了如何为我的团队设置共享符号服务器。

我想知道的是将我自己的符号添加到商店中。

我的问题是:我究竟从中获得了什么?

假设我有以下构建过程:

  1. 我将更改提交到我的 Subversion 存储库
  2. TeamCity CI 工具获取这些更改并进行构建 + 单元测试
  3. 二进制文件被提交到不同的 Subversion 存储库(供我制作的应用程序引用)

如果我添加到上面的第三点,将构建文件添加到符号存储中的能力,这给了我什么?

如果我创建一个程序并引用提交到存储库的二进制文件,我会同时获得 .dll、.pdb 和 .xml(智能感知支持),因此我的堆栈跟踪似乎已经包含了我需要的所有内容。

这是分发 .pdb 的替代品吗?

或者只是为了当我需要在 WINDBG 中打开一个 .DMP 文件并分析它的堆栈时,我可能根本没有可执行文件,只有其他人提供的 .DMP 文件?(也就是说,可执行文件可能来自旧版本,我只得到了 .DMP 文件)

0 投票
2 回答
240 浏览

.net - 在 Visual Studio 中调试框架代码

这篇文章(http://blogs.msdn.com/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx)仍然是调试的首选方法吗来自视觉工作室的框架代码?还是有什么改变?

0 投票
0 回答
513 浏览

visual-studio-2008 - VS.NET:启用源服务器支持;无法从源服务器检索源文件

我已经为我当前的一个项目设置了一个符号服务器。在夜间构建期间,我:

  • 构建我的源
  • 将标签应用于构建中已使用的源文件
  • 用必要的信息索引 pdb 文件
  • 将 pdb 文件存储在 MS 符号服务器中

(其实我一直在关注这篇文章:Source Server help you kill bugs

现在,我已经引用了在另一个项目中发布其符号的 DLL。我调试该项目,并且我想进入已发布调试符号的项目的代码。

我已经设置了 VS.NET,以便启用源服务器支持。当我调试我的项目时,我可以看到(在“模块”窗口中)我引用的项目的符号确实已加载。当我想进入源自引用的 DLL 的方法时,VS.NET 会弹出一个警告,我必须确认 VS.NET 确实可以执行命令以从源服务器获取源代码。

该命令如下所示:

(为简洁起见,我省略了完整路径)。

当我运行命令时,我收到错误“没有可用的源代码”。

当我在命令行上执行该命令时,出现错误:

无效的 DOS 路径

当目标路径不存在时,VSS 似乎会返回此错误。实际上,我的磁盘上不存在应该放置检索到的源文件的本地路径。VSS 应该创建它。

如何确保 VS.NET 发出命令,以便在从源服务器检索源代码时创建目标路径?

编辑: 我已经设法在我的追求中走得更远。在我的源服务器机器上,我编辑了该vss.pm文件,并更改了VSS_EXTRACT_CMD写入 PDB 文件中写入的“流”中存在的变量中的命令。我已将(Perl?)代码更改为:

所以,事实上我已经添加了'if not exists ... mkdir ...' 部分,并且我用竖线(|)分隔了这两个命令。

在 VS.NET 中,我已指定由 VS.NET 发出的 SourceServer 命令也应写入输出窗口。因此,当我复制在输出窗口中找到的命令并在命令提示符下执行该命令时,将创建目录并检索文件。\o/

不幸的是,当 VS.NET 执行此操作时,没有检索到文件,也没有创建目录......关于问题可能是什么的任何想法?

编辑: 我已经在 Windows XP 机器上进行了测试,并且它可以工作。我在办公室使用 Windows Vista,而在 Vista 上,它不起作用。似乎不允许 VS.NET 创建目标目录?

0 投票
2 回答
983 浏览

visual-studio-2010 - IntelliTrace - 说它需要一个符号服务器

我正在尝试让我的自动化构建与 IntelliTrace 一起使用。

当我加载基于构建的 IntelliTrace 文件时,会出现以下错误:

这是什么意思?我需要安装一个名为 Symbol Server 的服务器类型吗?(当我登录到我的 MSDN 订阅(高级版)时,没有名为 Symbol Server 的产品。)

我真正想要的是如何设置它(我不能成为第一个尝试的人)。