标签: symbol-server

如何调试从TeamCity部署的nuget包?

我已将我的团队使用的库放入从TeamCity部署到网络文件夹的nuget包中.我虽然无法调试这段代码!SymbolSource是我读过的一个解决方案,但我更愿意找到一些方法直接从Teamcity访问.pdb /源文件.有谁知道如何做到这一点?

编辑. 当我签'Include Symbols and Source'入Nuget Pack构建步骤时,除了网络文件夹中的.nupkg文件之外,TeamCity还会创建.Symbol.nupkg..Symbol.nupkg包含src和.pdb文件.

编辑.'Include Symbols and Source'在TeamCity上取消选中并将以下内容添加到我的nuspec文件中:

  <files>
    <file src="..\MyLibrary\bin\release\MyLibrary.dll" target="lib\net40" />
    <file src="..\MyLibrary\bin\release\MyLibrary.pdb" target="lib\net40" />
    <file src="..\MyLibrary\*.cs" target="src" />
    <file src="..\MyLibrary\**\*.cs" target="src" />
  </files>
Run Code Online (Sandbox Code Playgroud)

这在nuget包中添加了我的库的dll,pdb和源文件,并且没有生成.Symbols文件,我认为这只是符号服务器所需要的.

c# deployment teamcity symbol-server nuget

67
推荐指数
4
解决办法
4万
查看次数

如何更改年龄不匹配的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 Secrets:A Programmers Cookbook"一书的pdf链接.作者详细介绍了pdb文件格式.正如我之前所说的那样,我已经将pdb加载到十六进制编辑器中,然后翻出一些看起来我的年龄/签名匹配,但它没有用.好吧,在使用W2k秘密书中的实用程序将pdb"爆炸"到包含的流中之后,我发现它们隐藏了对流3中年龄的另一个引用!!!!!!! 一旦我翻过那个,它在windbg中匹配.这太棒了!!!! 非常感谢....这里的符号服务器我来了!

windows symbols windbg symbol-server pdb-files

29
推荐指数
3
解决办法
2万
查看次数

通过http设置公共(或私有)符号服务器

我找到的每一篇文档(参考文献1到5)都讨论了如何使用共享的UNC路径设置符号服务器,然后将正确的设置提供给本地调试器实例(无论是_NT_SYMBOL_PATH还是Visual Studio IDE调试设置) ).

Microsoft提供了一个符号服务器(参考6),可通过http获取其公共符号存储.

我想为我自己的代码创建一个可通过http传输访问的符号服务器,而不是通过UNC文件共享.Mozilla人似乎已经这样做了(参考文献7),但它不再具有功能性.

到目前为止,是否有更好的参考可用于执行此任务?


参考

  1. https://msdn.microsoft.com/en-us/library/b8ttk8zy(v=vs.80).aspx
  2. http://msdn.microsoft.com/en-us/library/ms680693(v=vs.85).aspx
  3. http://stackhash.com/blog/post/Setting-up-a-Symbol-Server.aspx
  4. http://entland.homelinux.com/blog/2006/07/06/ ...
  5. http://msdn.microsoft.com/en-us/windows/hardware/gg462988
  6. http://support.microsoft.com/kb/311503
  7. http://developer.mozilla.org/en/Using_the_Mozilla_symbol_server

http symbol-server visual-studio

22
推荐指数
4
解决办法
1万
查看次数

设置符号服务器给我的是什么?

我读完了这篇文章:设置一个符号服务器,详细介绍了如何为我的团队设置共享符号服务器.

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

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

我们假设我有以下构建过程:

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

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

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

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

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

.net symbol-server

19
推荐指数
1
解决办法
2369
查看次数

如何创建和使用符号服务器?

我创建了一个powershell脚本,在构建设置为release后,从drop位置获取所有pdb文件,并将它们复制到网络上共享的文件夹中.

我还创建了一个示例应用程序,并添加了包含我需要的程序集的nuget包(没有pdb文件).

我在网上找到了一些引用,但我无法使用pdb文件调试程序集.我正在使用VPN连接来连接到包含pdb文件和Visual Studio 2010的共享文件夹.

为了使用网络上共享的pdb文件能够调试我使用nuget包管理器获得的程序集,我需要做出哪些确切的步骤?

谢谢 !

c# tfs debug-symbols symbol-server

15
推荐指数
1
解决办法
5362
查看次数

Visual Studio不缓存Microsoft Symbol Server缓存未命中?

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

有什么方法可以让Visual Studio记住"未命中"而不是再打扰一段时间?

debugging symbol-server visual-studio-2008

12
推荐指数
2
解决办法
4601
查看次数

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

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

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

  L:\Symbols
      \browseui.dll
        \44FBC679fe000
          browsue.dll
      \browseui.pdb
        \44F402F62
          browseui.pdb
      \explorer.exe
        \3EBF1F14f7000
          explorer.exe
      \explorer.pdb
        \3EBF1F141
          explorer.pdb
      \msvcr71.pdb
        \60D915C6AB6A4F3586E9096E2F8856482
          msvcr71.pdb

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

其中一些是9位数,大约13位数,其他是33位数.它看起来像一个实际的实时文件(由于某种原因存储在符号缓存中)具有13位哈希,而其(几乎相似)调试数据库获得9位哈希.一些调试数据库获得13位哈希值; 虽然他们没有相应的实时文件,却无法弄清楚是什么让这些特殊.

我已经尝试使用我所知道的各种哈希算法(其中39个)对文件进行哈希处理,并且没有任何匹配(直接向上,反向,备用字节序等)

有任何想法吗?

更新 我想我终于找到了它.来自符号存储格式:

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

编辑 Dang,不幸的是它只提到目录名是从各个方面派生的(我猜不是很好的哈希),但并没有提到具体如何.搜索继续...... :-(

hash symbol-server symstore

11
推荐指数
1
解决办法
3424
查看次数

Azure DevOps SourceLink 和 Symbol Server 以及 Nuget 包中的 Release DLL

我有一个 .NET Standard 2.0TestSouceLink项目,其配置如下.csproj

<PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
    <Authors>Jérôme MEVEL</Authors>
    <Description>Just a test package for SourceLink</Description>
    <Version>1.1.1</Version>

    <PublishRepositoryUrl>true</PublishRepositoryUrl>
    <EmbedUntrackedSources>true</EmbedUntrackedSources>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <DebugType>full</DebugType>
    <DebugSymbols>true</DebugSymbols>
</PropertyGroup>

<ItemGroup>
    <PackageReference Include="Microsoft.SourceLink.Vsts.Git" Version="1.0.0-beta2-18618-05">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
    </PackageReference>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

我们有一个 Azure DevOps 服务器,它在构建管道中生成我们的 Nuget 包。

Publish symbols path在最后添加了一个任务来将.pdb文件推送到 Symbol Server,并且我设法让 Source Link 与 Azure DevOps Symbol Server 一起工作,仅使用Debug构建配置。

问题是我不希望在调试模式下生成 Nuget 包中的 DLL。我希望它们是Release。但是当我将dotnet pack任务更改为ReleaseConfiguration to package文本框中使用时,源链接不再起作用。 …

symbol-server nuget nuget-package sourcelink azure-devops

11
推荐指数
0
解决办法
674
查看次数

为什么我在referencesource.microsoft.com上找不到System.Web.pdb?

SYMSRV:  http://referencesource.microsoft.com/symbols/System.Web.pdb/E6EBD6B61CEA407591438CC4E48036891/System.Web.pdb not found

http://referencesource.microsoft.com/symbols: Symbols not found on symbol server.
SYMSRV:  System.Web.pdb from http://msdl.microsoft.com/download/symbols: 131401 bytes 

http://msdl.microsoft.com/download/symbols: Symbols downloaded from symbol server.
C:\Users\Micah\Symbols\System.Web.pdb\E6EBD6B61CEA407591438CC4E48036891\System.Web.pdb: Symbols loaded.
Run Code Online (Sandbox Code Playgroud)

注意它是如何无法找到System.Web.pdbreferencesource.microsoft.com.它发现它,msdl.microsoft.com但那些没有源文件/行.我已经下载的源代码System.Web.dll来自referencesource.microsoft.com所以我知道源可用.根据我的理解,referencesource.microsoft.com应该为所有已发布的.NET Framework版本(包括补丁)提供PDB?

的版本System.Web.dll当前正在加载是发现在GAC标记为版的64位版本4.0.30319.34212.它的发布日期为5/29/2014.据我所知,这是最新版本System.Web.dll,但如果我错了,我不介意升级,如果它解决了这个问题.

.net c# debug-symbols symbol-server reference-source

9
推荐指数
0
解决办法
2874
查看次数

dotPeek符号服务器不向VS2013调试器提供源代码

我对dotPeek符号服务器功能的理解如下:

每当IDE要求调试给定程序集的信息时,dotPeek会将程序集和符号(+反编译的源代码?)反编译回IDE.

但我的经验如下:

配置我的IDE并在调试时检查"输出"窗口后,我看到正在加载所有托管程序集的符号.我可以进入这些库/ .NET平台并在那里调试没有问题.

但是有一个我遇到问题的第三方组装.输出窗口在我的应用程序启动期间打印出来:

'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Users\kostas\AppData\Local\Temp\Temporary ASP.NET Files\root\9bc23327\4940c90d\assembly\dl3\8fde229b\401c97fd_0937d001\WebApi.Hal.dll', Symbols loaded.
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试进入WebApi.Hal类时,IDE会要求我提供源代码文件,并输出以下内容:

SRCSRV: The module 'C:\Users\kostas\AppData\Local\Temp\Temporary ASP.NET Files\root\9bc23327\4940c90d\assembly\dl3\8fde229b\401c97fd_0937d001\WebApi.Hal.dll' does not contain source server information.
Run Code Online (Sandbox Code Playgroud)

组态:

选项 - >调试 - >符号:

按此顺序配置三个Symbol服务器

http://srv.symbolsource.org/pdb/Public

http://referencesource.microsoft.com/symbols

HTTP://本地主机:33417 /

选项 - >调试 - >常规截图:

选项 - >调试 - >常规截图

我错过了什么?

c# symbol-server dotpeek visual-studio-2013

9
推荐指数
0
解决办法
1068
查看次数