And*_*adt 22 http symbol-server visual-studio
我找到的每一篇文档(参考文献1到5)都讨论了如何使用共享的UNC路径设置符号服务器,然后将正确的设置提供给本地调试器实例(无论是_NT_SYMBOL_PATH还是Visual Studio IDE调试设置) ).
Microsoft提供了一个符号服务器(参考6),可通过http获取其公共符号存储.
我想为我自己的代码创建一个可通过http传输访问的符号服务器,而不是通过UNC文件共享.Mozilla人似乎已经这样做了(参考文献7),但它不再具有功能性.
到目前为止,是否有更好的参考可用于执行此任务?
参考
And*_*adt 15
我相信答案很简单,"只需通过某种http路径共享目录." 根据Chad Austin关于"创建你自己的符号服务器"的条目,这将是有效的.
换句话说,symstore.exe当用作http://symbols.example.com/public_symbols/时,用于存储符号的目录将可用作Windows调试工具的符号服务器目标.
Bob*_*dle 12
让多个用户直接对同一符号存储区使用Symstore.exe时要小心.微软关于这个主题的白皮书让你觉得你只需创建一个共享,让所有人都通过作为Windows调试工具的一部分提供的SYMSTORE.EXE程序进行更新.白皮书建议您按照每个版本完成此操作.
它适用于单个用户,或者通过为团队更新符号服务器的单个人汇集所有更新.
不幸的是,一些白皮书底部的"精细打印"表示只有一个运行symstore.exe的用户可以同时更新共享符号服务器而不会破坏内容.
(例如:在http://msdn.microsoft.com/en-us/library/ms681417(VS.85).aspx,Microsoft说:"注意SymStore不支持来自多个用户的同时交易.建议一个用户被指定为符号存储的"管理员",并负责所有的add和del事务.")
因此,没有固有的机制来序列化符号存储的更新.似乎多次同时尝试更新符号存储可能会破坏符号存储和/或其索引.
我们不能为所有时区的整个数千人,国际公司建立依赖于通过一个地方的一个人协调的建设.
根据这些白皮书,我在2009年3月向微软提出了这个问题.谁证实这是一个可能的问题.在讨论之后,我们选择实现符号更新服务,该服务通过直接Windows调试工具SDK DbgEng.DLL SymbolSrvStoreFile()API调用来序列化更新,因此永远不可能同时针对相同的符号区域同时进行两次更新.用户具有构建操作,该操作通过服务对其符号进行排队,而不是直接更新符号存储.然后,该服务将更新序列化,以确保永远不会发生真正的并发更新尝试.
有关使用SymSrvStoreFile的有限文档当时并不十分清楚.我确实让它运转了.希望从那时起它有所改进.如果不是,最关键的问题是输入路径必须以类似于_NT_SYMBOL_PATH的格式指定.因此,而不是使用"C:\ Data\MyProject\bin"作为输入路径,而是指定"srv*C:\ Data\MyProject\bin".
我们的服务现在还通过数据库记录更新.数据库既可以作为符号存储的备份(如果它已经损坏并且必须重建),也可以创建一个报告点,以便管理人员和支持人员知道谁实际上是在保存符号,哪些不是.我们生成每周一次的"符号签到"报告,该报告是自动发生给利益相关者的.
通过HTTP提供的符号服务器与通过UNC文件路径提供的符号服务器具有相同的结构,因此最简单的方法是使用symstore.exe将文件存储在某个位置的文件夹中,然后使用简单的HTTP服务器通过HTTP公开该文件夹(即使python -m SimpleHTTPServer在符号目录中运行也可以)。
一个小问题是,如果不存在符号文件,则HTTP服务器必须返回404错误代码(至少在Visual Studio 2013下进行了测试)。我遇到了一个问题,其中HTTP服务器由于缺少文件而返回403,导致Visual Studio在第一个失败的请求之后停止发出请求。
symstore.exe创建许多辅助文件和文件夹(该000Admin/文件夹refs.ptr和files.ptr文件)。这些都不需要符号服务器即可工作。
如果要创建符号存储而不使用symstore.exe,则可以使用以下结构上载文件:
BinaryName.pdb/$BUILD_ID/BinaryName.pdb
BinaryName.exe/$LINK_ID/BinaryName.exe
哪里BUILD_ID是一个GUID嵌入PDB文件和可执行文件,LINK_ID是在可执行文件生成的时间戳和文件大小的组合。这些可以通过从breakpad库中读取dump_syms.exe工具的输出来获得。参见http://www.chromium.org/developers/decoding-crash-dumps
| 归档时间: |
|
| 查看次数: |
12115 次 |
| 最近记录: |