zoukankan      html  css  js  c++  java
  • [转]关于建设symbol store的建议

    关于建设symbol store的建议

    2006-12-21

    一、symbol store的需求分析:

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

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

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

    二、搭建symbol store的调研:

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

           1、如何设置你的VC Project

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

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

    你原有的优化等选择都不必改变,这样设置会产生一个pdb文件,就是我们所需要的调试符号了,这样会导致你的exe或dll等生成模块会多出一定数目的字节,不必担心,这是链接器在你的模块里加入了对这个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的脚本,这样一定会很爽,呵呵。



    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1615448

  • 相关阅读:
    解决ssh: connect to host github.com port 22: Connection refused
    sudo/su命令免密执行
    Linux tar.gz、tar、bz2、zip 等解压缩、压缩命令详解
    项目实战——校验文件名和邮箱地址
    项目实战:判断闰年平年并输出某月的天数
    ubuntu软件更新时出现没有Release文件
    项目实战:根据出生日期判断星座
    项目实战--实现淡旺季飞机票打折
    xxx.java:1: 错误: 类xxx是公共的, 应在名为 xxx.java 的文件中声明 public class xxx
    32位int整数范围
  • 原文地址:https://www.cnblogs.com/txk1452/p/2634028.html
Copyright © 2011-2022 走看看