问题标签 [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.
.net - 如何在 Visual Studio 中调试这行代码?
我在 VS2008 中有以下代码行。
我想调试这个GetVirtualpath(..)
方法..看看它想做什么。
我假设我需要从 MS 符号服务器中获取符号。
我所做的是
- 关闭仅启用我的代码
- 打开启用源服务器支持
- 调试时显示模块窗口(手动加载正确的模块)
在调试模式下编译,在该行设置断点并调试运行。当我上线时,我System.Web.Routing(..)
从MS Symbol server手动加载。这有效(pdb 在本地下载),当我进入这一行时,我转到了一些 Dissassemler 代码:(
谁能看到我做错了什么?
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中匹配了。这是巨大的!!!!非常感谢....符号服务器我来了!
.net - 符号服务器说明
在这个答案中,用户建议使用符号服务器。
谁能解释他们如何工作以及如何使用 TFS 2008 进行设置(如果可能)?
visual-studio-2008 - Visual Studio 不缓存 Microsoft 符号服务器缓存未命中?
我将 Microsoft Symbol Server 与 Visual Studio 2008 一起使用,它运行良好。不幸的是,当公共符号服务器不包含符号时,超时需要一段时间,并且每次我启动项目进行调试时,Visual Studio 都会尝试重新加载相同的缺失符号。
有什么方法可以让(或欺骗)Visual Studio 记住“未命中”并且暂时不再打扰?
hash - Microsoft 符号服务器/本地缓存哈希算法
我试图弄清楚 Microsoft 符号本地缓存目录使用什么散列算法。
例如,本地缓存可以如下所示
文件与其调试数据库之间似乎存在某种对应关系。除此之外,我无法弄清楚这些(大概)十六进制字符串文件夹的名称是如何生成的。
其中一些是 9 位数字,一些是 13 位数字,还有一些是 33 位数字。它看起来像一个实际的活动文件(由于某种原因存储在符号缓存中)具有 13 位哈希,而其(几乎相似)调试数据库获得 9 位哈希。一些调试数据库得到一个 13 位的哈希值;无法弄清楚是什么让这些特别,尽管它们没有相应的实时文件。
我已经尝试使用我所知道的每种散列算法(其中 39 个)对文件进行散列,并且没有以任何方式匹配(直接向上、反向、交替 endian'd 等)
有任何想法吗?
更新 我想我终于找到了。从符号存储格式:
SymStore 使用文件系统本身作为数据库。它创建了一个大型目录树,目录名称基于符号文件时间戳、签名、年龄和其他数据等内容。
编辑 当,不幸的是它只提到目录名称是从各个方面派生的(我猜不是一个哈希),但没有确切说明如何。搜索仍在继续…… :-(
windbg - WinDbg,显示加载模块的符号服务器路径(即使符号没有加载)?
WinDbg 有没有办法在不使用 DbgEng API 的情况下为所有加载的模块显示符号服务器路径(即PdbSig70 和 PdbAge )?
我知道
对已加载符号的模块执行此操作。我想知道未加载符号的这些路径,以便诊断问题。任何人都知道这是否可能无需使用 DbgEng API?
编辑:
我也意识到你可以使用
获取有关符号加载的错误消息。虽然这确实有有用的输出,但它与我想要的其他输出交错并且不像'lml'那样简单明了
.net - 设置符号服务器能给我带来什么?
我通读了这篇文章:设置符号服务器,其中详细介绍了如何为我的团队设置共享符号服务器。
我想知道的是将我自己的符号添加到商店中。
我的问题是:我究竟从中获得了什么?
假设我有以下构建过程:
- 我将更改提交到我的 Subversion 存储库
- TeamCity CI 工具获取这些更改并进行构建 + 单元测试
- 二进制文件被提交到不同的 Subversion 存储库(供我制作的应用程序引用)
如果我添加到上面的第三点,将构建文件添加到符号存储中的能力,这给了我什么?
如果我创建一个程序并引用提交到存储库的二进制文件,我会同时获得 .dll、.pdb 和 .xml(智能感知支持),因此我的堆栈跟踪似乎已经包含了我需要的所有内容。
这是分发 .pdb 的替代品吗?
或者只是为了当我需要在 WINDBG 中打开一个 .DMP 文件并分析它的堆栈时,我可能根本没有可执行文件,只有其他人提供的 .DMP 文件?(也就是说,可执行文件可能来自旧版本,我只得到了 .DMP 文件)
.net - 在 Visual Studio 中调试框架代码
这篇文章(http://blogs.msdn.com/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx)仍然是调试的首选方法吗来自视觉工作室的框架代码?还是有什么改变?
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 创建目标目录?
visual-studio-2010 - IntelliTrace - 说它需要一个符号服务器
我正在尝试让我的自动化构建与 IntelliTrace 一起使用。
当我加载基于构建的 IntelliTrace 文件时,会出现以下错误:
这是什么意思?我需要安装一个名为 Symbol Server 的服务器类型吗?(当我登录到我的 MSDN 订阅(高级版)时,没有名为 Symbol Server 的产品。)
我真正想要的是如何设置它(我不能成为第一个尝试的人)。