搭建pdb服务器

背景

目前使用jenkins进行每日编译、部署,但是一旦程序出现异常后,查找正确的pdb文件也是件麻烦的事情,所以希望能有微软符号服务器一样的功能。

步骤

通过google 查找一些资料,自己尝试了下,还是比较简单的.

安装windbg

环境变量path 中设置windbg路径。

准备一块大硬盘

会保存很多历史版本的pdb,所以有必要准备一块大硬盘

测试

管理员方式运行cmd

1
2
3
4
5
6
7
symstore add /r /f d:\public_game\*.pdb /s e:\symstore /t "gamechannel"
其中
'd:\public_game\*.pdb' 为编译后的pdb路径
'e:\symstore' pdb服务器路径
"gamechannel" 产品名称

更多参数说明 symstore -help

搭建http服务

我们需要提供对外访问符号文件的途径,最简便的方式就是使用IIS创建一个HTTP服务并对外开放。使用搭SII建HTTP服务器的教程网上很多,这里简述以下:

  • 打开IIS,选择网站->右键“添加网站”
  • 输入网站名称,如Symbols,选择刚创建的符号文件存储目录为物理路径,端口为6776 ,其他保持默认,点击确定。
  • 在网站主页中打开MIME类型,右侧添加,文件扩展名输入PDB,MIME类型输入application/octet-stream。这一步是为了允许从该站点访问读取PDB类型的文件。
  • 设置权限。我们创建的网站默认情况下是不允许匿名用户访问的,为了允许调试器下载符号,我们需要添加一定的权限。点击右键我们的网站->编辑权限->选择安全选项卡->添加IIS_IUSRS用户或everyone用户并赋予Read & execute,List folder contents和Read三项权限。
  • 左侧右键刚创建的网站->管理网站->重新启动。

jenkins 设置

在jenkins 原本保存exe、pdb 的命令下 增加 以上命令即可

windbg 设置

1
2
SRV*e:\mylocalsymbols*http://msdl.microsoft.com/download/symbols
SRV*e:\companysymbols*http://192.168.1.7:1234/

好了,pdb 就可以自动获取了