关于建设symbol store的建议

 

关于建设symbol store的建议

2006-12-21

 

一、symbol store的需求分析:

       1、我们现在的调试环境严重依赖开发人员自己使用的开发环境,缺点在于其他人要进行调试要么搭建一个同样的环境,严重地占去大家不必要花费的工作时间,进一步带来的问题是各个版本的源代码流落各处,易出问题,要么就只有交给原开发人员,同样带了严重的交流时间开销,而且不仅原开发人员的工作会被打断,而且需求人还要在这个过程中等待。

2、即便是开发人员自己面对不同版本的调试,也是一个令人挠头的事情,即便是现在我们保存了map文件,但是调试的便利与效率,相信也是大家希望进一步提高的。

如何改变现有的调试难的问题,并且提高大家的调试效率,应该是一个需要考虑的问题。

 

二、搭建symbol store的调研:

       使用过MS的调试符号服务器的同事,大概已经领略到调试符号服务器的高效率。经过调研,可以确认我们可以搭建自己的调试符号服务器,相关事项罗列如下:

       1、如何设置你的VC Project

VCProject Settings对话框上,选择你要设置的Project(如果有多个Poject的话),选择你要设置的build选项(一般为Win32 Release),在Link页上,Category选择General,然后选择Generate debug info,或者Category选择Debug,然后选择Debug info,选择Microsoft format

这样如果生成不了pdb,或者生成的pdb有错误,同样在VCProject Settings对话框上,选择你要设置的Project(如果有多个Poject的话),选择你要设置的build选项(一般为Win32 Release),在C/C++页上,Category选择General,在Debug info中,选择C7 CompatibleProgram Database

你原有的优化等选择都不必改变,这样设置会产生一个pdb文件,就是我们所需要的调试符号了,这样会导致你的exedll等生成模块会多出一定数目的字节,不必担心,这是链接器在你的模块里加入了对这个pdb的一个指引,并没有任何调试信息包含到你的模块。

2、如何变绝对路径为相对路径

前面讲到在你的模块里有一个对pdb的指引,有一点比较讨厌,就是这个指引使用了绝对路径——你build这个模块时的绝对路径,我们要做得像MS的一样,去除这个绝对路径,MS提供一个工具来做这件事,那就是Binplace,它甚至可以让你为使用你的接口的客户提供受限的符号文件,具体可参考MS的帮助文档。

 

binplace -a -x -s %stripped_path% -n %full_path% %bin_path% -r %RootDestinationPath% -:DEST %ClassPath%

 

使用时请替换%stripped_path %%full_path %%bin_path%%RootDestinationPath%%ClassPath%

 

3、如何添加调试符号到仓库

请首先安装windbg,然后使用如下脚本:

 

set path=C:/Program Files/Debugging Tools for Windows;%path%

 

symstore add /r /p /f %YOUR_PDB_PATH%/*.* /s %SYMBOL_STORE_PATH% /t "ivtdriver"

 

使用时请替换%YOUR_PDB_PATH %,与% SYMBOL_STORE_PATH %

4、如何引用仓库中的调试符号

设置环境变量:

 

_NT_SYMBOL_PATH=srv*DownstreamStore*SYMBOL_STORE_PATH*http://msdl.microsoft.com/download/symbols

 

使用时,请注意替换DownstreamStore,与SYMBOL_STORE_PATH

这样,在以后使用windbg调试程序或分析dmp文件时,就可以自动取得我们自己的调试符号了。

 

三、建立symbol store的步骤:

1、  确定symbol store的路径,申请服务器空间,用WEB是个好主意,用共享文件夹也不错

2、  修改现有VC Project的设置,生成pdb(请不要丢了map设置,没准儿还有用)

3、  应用binplace工具,让pdb文件中的绝对路径变相对路径

4、  应用symstore工具,将pdb文件添加到symbol store

 

四、应用symbol store的步骤:

       1、设置环境变量_NT_SYMBOL_PATH,引用我们自己的symbol store

 

五、总结:

       结合我前面提出的daily build script,大家现在可以在里面提供自动向symbol store添加pdb的脚本,这样一定会很爽,呵呵。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值