Chinaunix首页 | 论坛 | 博客
  • 博客访问: 304899
  • 博文数量: 174
  • 博客积分: 3061
  • 博客等级: 中校
  • 技术积分: 1740
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-04 22:43
文章分类

全部博文(174)

文章存档

2011年(54)

2010年(14)

2009年(30)

2008年(26)

2007年(27)

2006年(23)

我的朋友

分类: WINDOWS

2011-01-27 09:46:43

这封邮件告诉大家如何使用带源文件索引的符号服务器。

 

当我们拿到一个Dump时,通常是这样做的:

1.       确定Dump发生时的版本号;

2.       找到对应版本的PDB文件;

3.       必要时再找对应版本的源文件;

当发布出去的版本较多时,上述过程是很麻烦的;

之前我们在10.1.151.37上建立的符号服务器已经为大家省去了第1和第2步的麻烦,

但是当需要查看相应的源代码时,第3步依然是麻烦的。

经过我多日来断断续续的调查,这个麻烦也终于可以去掉了。

 

以下介绍带源文件索引的符号服务器的创建过程:

以下是创建符号服务器的过程,使用符号服务器不需要这些工作;大家可仅作兴趣了解;

以下描述仅适用于源代码服务器为SubVersion的情形,其他源代码服务器的情况,请参考相应资料。

1.       准备工作

安装Windows Debugging Tools

下载地址:http://www.microsoft.com/whdc/devtools/downloads.mspx

安装Perl

下载地址:

安装SubVersion

下载地址:

安装SubVersion要注意几点:

Ø  它可以与TortoiseSVN共存;

Ø  一定不能安装带本地化语言的版本,必须是英文版;如果安装上述推荐地址的SilkSVN,注意不要选择本地语言选项。为了确定是否安装了英文版,可以在命令行中敲svn help,看输出的是否全部为英文提示;这点尤为重要,而且容易被忽视;

将上述软件的安装路径加入到Path环境变量中;注意对于Debugging Tools for Windows,不仅需要把Debugging Tools for Windows目录加入到Path环境变量,还需要将其下面的srcsrv目录也加进去,因为后续执行的svnindex命令等实际上是在srcsrv目录中。

2.       为符号文件添加源文件索引

当编译完成后,将符号文件添加到符号服务器之前,需要对符号文件进行处理,在符号文件上加入我们的源文件服务器地址信息;如果没有这一步,那么源文件只能人工自己去找了。

执行如下命令行:

Svnindex /debug /symbols=”E:\MySource\Symbols” /source=” E:\MySource\”

上述的”E:\MySource\Symbols”为符号文件所在路径;” E:\MySource\”为源文件所在路径

注意上述两个路径一定必须是全路径,不能是相对路径;这点与若干文献描述不一致,

但是我的实践证明,如果是相对路径,这个命令是不能执行成功的。

上述命令的执行结果如下图:

上述命令实际上是往符号文件中加入了svn命令,用于下载相应的源文件。

要看究竟发生了什么,可以采用srctool命令查看某PDB文件中的信息,如:

Srctool e:\MySource\Symbols\OneFile.pdb

执行结果类似下图:

看到了吧,文件中含svn.exe cat命令,从源文件服务器中将相应revision的文件下载下来。

3.       将符号文件添加到符号服务器

接下来就是把符号文件加入到符号服务器了。很简单,就是一条命令:

symstore.exe add /r /f "E:\AliWWAutoPackage\Trunk\SourceCode\setup\release\*.pdb" /s "E:\SymbolServer" /t TaoyouSetup /v "1.0.0.1" /compress /d "E:\SymbolServer\SymStore_TaoyouSetup.log" /o

         上述命令中,/f后的路径是符号文件路径;/s后的路径是符号服务器所在路径;其他命令参数请参考Symstore.exe的命令说明吧。

         然后把符号服务器路径设置为文件共享,或者通过HTTP服务器暴露出去,那就是名副其实的“符号服务器”了。

 

以下介绍如何使用符号服务器(必读):

先介绍windbg中的用法吧。

1.       设置符号服务器地址;

如我的设置是这样的:srv*D:\SymbolCache*\\10.1.151.37\SymbolServer

后面那部分就是我们的符号服务器地址;这个估计大家早就知道了;

2.       设置源文件服务器地址:

同样,可以通过Windbg的菜单File->Source File Path,设置如下:

srv*D:\SourceCache*

上述的D:\SourceCache是本地缓存路径,注意自己先把该文件夹建好了;

3.       windbg中打开某dump文件。

如敲入!analyze –v命令,此时就能够显示相应的源文件信息了,如:

         B了吧,如果没有源文件索引,上述信息是不会显示出来的。

 

         不过第一次使用时,windbg会弹出如下安装提示:

(en-us).gif

选择最后一项后,今后就不会出现了。

 

Visual Studio上的使用方法待续

 

注意:目前我们的符号服务器上处理TaoyouSetup,还没有带源文件索引的符号文件;将在发布下个版本时加上,敬请期待!

如有兴趣,可以抓一个TaoyouSetup的包试验一下。

 

参考文献:

第一个文献看起来有理有据,描述了基本过程;不过在细节方面貌似还是有些问题的;

第三个文献很详细,我也没有通读

阅读(520) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~