设置Symbol Server

微软的Symbol Server可以帮我们把symbol信息存储在一个server上,那么当你debug一个程序的时候只要指定symbol server,VS就可以自动加载并且给你提供一个舒服的debug环境!Perforce等source control 代码也支持symbol server,当你双击一个callstack的frame的时候,VS能从p4上下载源代码并且给你打开,方便极了!

那么如何设置symbol server呢,终于找到个傻瓜教程:http://brockreeve.com/post/2009/10/23/Symbol-Server-Setup.aspx

以下为要点翻译:

第一步:在这里http://msdn.microsoft.com/en-us/windows/hardware/gg463009.aspx下载Debuging Tools For Windows,并且安装。默认安装在这里:C:\Program Files\Debugging Tools for Windows (x86)

  • srcsrv\ssindex.cmd: 这里是一堆perl的脚本,它的作用是把pdb里的源文件信息替换成版本管理软件的格式,这个过程叫做“indexing the pdb”,也就是说经过这个步骤以后,VS就能从P4上拿源文件了
  • symstore.exe:这个函数把pdb和dll上传到一个准备给大家共享的文件夹上,debug的时候,symbol就是从这里来的
  • srcsrv\srctool.exe: 这个的作用是检查pdb是不是indexed correctly
  • srcsrv\srcsrv.doc:文档

第二步:Index the PDB。运行ssindex.cmd之前,修改srcsrv\srcsrv.ini,设置source control server的信息。接下来就运行ssindex.cmd:

  • ssindex.cmd -system=p4 -symbols=C:\p4root\addon\Crystal\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug -source=C:\p4root\addon\Crystal\WindowsFormsApplication1\WindowsFormsApplication1 /debug
    • -symbols是pdb所在
    • -source是源文件所在
    • \debug表示以verbose模式运行该命令
  • 实际上,这个命令在本地针对每个源文件调用“p4 have”命令,然后把返回的p4路径和版本信息写到pdb里
  • 使用srctool c:\p4root\addon\Crystal\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.pdb就能看到改动的结果。(本命令使用了p4 print命令)

第三步:Add to symbols store。使用symstore.exe

  • symstore add /r /f C:\p4root\addon\Crystal\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug /s C:\Symbols /t app
  • /s 指明symbol store的root folder
  • symbol store就是一个文件夹而已,**.pdb文件夹里存的是以GUID命名的文件。系统内部通过guid来将exe和pdb定位。
  • 想要看更详细信息,你可以在exe或dll上执行dumpbin /headers命令,看看输出是什么

第四步:debug的时候使用symbol server吧

  • Tools -> Options: Debugging->Enable Source Server Support勾上
  • Tools -> Options: Debugging->Symbols->设置symbol server和本地cache。(注意,本地Cache要放在一个你有权限访问的地方,否则VS会默默地招不到symbol)
  • 接下来就用VS attach到进程,增加断点吧,一切都ok了!

最后,文中还提到了怎么设置silverlight的symbol server,这里就复制粘贴一下:

  • If you are wanting to do this with silverlight you will have to add the registry key below for every machine that wants to pull symbols from the symbol store.
  • HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\AD7Metrics\Engine{00000000-0000-0000-0000-000000000000}  
  • Set RequireFullTrustForSourceServer to 0 (REG_DWORD)
  • I spent a week with Microsoft support on this one.

 

 

 

posted @ 2013-03-18 19:34  大兵八世  阅读(1975)  评论(0编辑  收藏  举报