说在前面:   微软符号服务器地址http://msdl.microsoft.com/download/symbols, 但是你手动在浏览器里面输入是访问不到的,他只提供给调试程序进行下载

1、方法1:  使用vs进行下载,当然必须是vs2003以后的版本,通过attach到一个进程中或者启动一个程序进行调试,然后打开模块列表窗口,在列表中每一个模块进行右键,即可进行下载符号

方法2: 使用windbg进行下载,同样是attach或run一个程序,设置一下符号路径,然后使用

.reload

或者.reload /f /v ntoskrnl.exe  (这个试过好像不可以,具体请高手指出原因)

当然也可以强制进行符号加载 使用

ld *  加载当前模块中所有的模块符号

或者 ld ntdll         (加载指定模块)

方法3:  采用symchk.exe 来进行加载(优点:在不调用dl的情况就可对dll进行符号加载,防止dll符号文件遗漏加载的问题)

symchk /r c:\windows\system32 /s SRV*c:\symbols\*http://msdl.microsoft.com/download/symbols

这个的意思是对c:\windows\system32下的exe和dll进行递归加载符号

目前不太清楚,怎么指定只对特定文件进行单独加载符号文件,请高手指出

方法4: 自己写下载符号文件的程序(当然如果你对windows的整个调试机制比较熟悉,可以采用,但是个人觉得没那个必要,毕竟微软提供了工具让你使用了)

建立 Symbols服务器
建立Symbols Server,最简单和方便的办法是使用网络共享路径,典型的,我们会在一台服务器上,依Symbols的类型建立多个路径:
\\symbols_server\ReleaseSymbols
\\symbols_server\TempSymbols
\\symbols_server\WinSymbols
其中ReleaseSymbols用于保存所有产品正式发布版本的symbols,这个目录中的pdb文件是不能删除的,TempSymbols用于保存非正式版本(例如测试阶段)的pdb文件,把它们分开保存,是因为pdb文件比较大,如果磁盘空间不够,就可以删除一些TempSymbols中的文件来节约空间。第三个目录WinSymbols用于存储各种windows版本系统本身的symbols。
对于ReleaseSymbols和TempSymbols目录应该是可控的,即一般设置管理员可写,其它人只读,通常由管理员在编译机编译完后同时更新其pdb文件。WinSymbols可以设置所有人可读写。

设置调试器Symbols路径
WinDBG、VC.Net及以上版本都可以通过设置环境变量指定Symbols路径,并都能根据环境变量设置自动去微软服务器拉取window系统symbols。右键我的电脑—〉“属性”—〉“高级”—〉“环境变量”—〉“系统变量”,新建两个环境变量:(这个地方不可乱设,会被坑大http://www.jianshu.com/p/bd82ba4f0a1a)
_NT_SYMBOL_PATH=srv*\\symbols_server\WinSymbols*http://msdl.microsoft.com/download/symbols
_NT_ALT_SYMBOL_PATH=cache*c:\symbols;\\symbols_server\ReleaseSymbols;\\symbols_server\TempSymbols;\\symbols_server\WinSymbols
这样设置后,调试器首先会到_NT_ALT_SYMBOL_PATH指定的共享路径中去寻找pdb文件,并把找到的文件缓存到c:\symbols目录下,下次访问时就不用到共享目录中查找,这样可以提高速度。当在_NT_ALT_SYMBOL_PATH中找不到时会查看路径_NT_SYMBOL_PATH,接着自动从微软官方网站下载windows系统的pdb文件,并缓存到共享目录\\symbols_server\WinSymbols中,缓存的好处是当其它人下载相同pdb文件时就直接从共享目录拉取,不用再跳到微软网站拉取。
注意设置以上变量后第一次使用Windbg或者VS调试时,因为要下载windows系统的pdb文件,可能要等待一段时间(Windbg会在命令行窗口右下角显示“BUSY”状态,但也有可能不显示状态,VS在状态栏会显示Loading symbols for XXX),并且pdb文件都相对比较大,视网速快慢可能要等待十几分钟到几个小时。另外在测试中发现,WinDbg下载symbols的速度比VS快得多。
如果要经常使用VC.Net及以上版本,上面的设置会有些问题,因为如果有一些dll没有symbols,这时VS每次进入调试状态时都会试图到微软网站查找相应的pdb文件,导致启动调试的速度很慢,因此最好的方法是在windbg的菜单“File”->“Symbol File Path...”填入cache*c:\symbols;\\bobdeng-pc\ReleaseSymbols;\\bobdeng-pc\TempSymbols;\\bobdeng-pc\WinSymbols;srv*\\bobdeng-pc\WinSymbols*http://msdl.microsoft.com/download/symbols
而对VS.Net及以上版本,在“Tools”—〉“Options”—〉“Bebugging”—〉“Symbols”面板中,逐一添加pdb路径\\bobdeng-pc\ReleaseSymbols、\\bobdeng-pc\TempSymbols和\\bobdeng-pc\WinSymbols,在“Cache symbols from server...”中填入c:\symbols。然后仅仅在需要用VS打开dmp文件定位Crash时才添加Windows系统Symbols路径:http://msdl.microsoft.com/download/symbols,当调试完后可以去掉该项选中状态使其失效。或者使用symchk工具下载symbols,见后面《附注:手工下载windows symbols的方法》

配置pdb文件编译输出目录
常常一个产品包含许多模块,为方便pdb管理,可以设置编译时统一输出symbol到一个的目录,例如Debug版本输出到pdbDebug,Release版本输出到pdb目录。在VC6.0下可以通过“工程属性”-〉“Link”-〉“Project Options”手工修改输出路径,VS.Net类似也可以指定输出目录。

同步PDB文件到Symbols服务器
pdb文件同步可以使用windbg安装目录下的symstore.exe命令行工具,为方便操作,可以在pdb文件输出目录建立两个批处理文件,例如
新建批处理文件UpdateTemp.bat,用于同步该目录下所有的pdb文件到服务器共享目录\\symbols_server\TempSymbols,内容如下:
"C:\Program Files\Debugging Tools for Windows (x86)\symstore.exe" add /r /f "./*.*" /s \\symbols_server\TempSymbols /t "MyProduct" /v "Temp"
@PAUSE
类似的,建立另一个批处理文件UpdateRelease.bat,同步pdb文件到服务器共享目录\\symbols_server\ReleaseSymbols

开发人员配置编译生成的本地symbols路径
并非所有编译的pdb都同步到symbols服务器上,为方便开发者自己调试,还需要配置本机的pdb文件路径,对于windbg,可以在菜单“File”->“Symbol File Path...”填入编译时的pdb输出目录,多个目录用;隔开。
使用VS时,在菜单“Tools”—〉“Options”—〉“Bebugging”—〉“Symbols”面板中填入编译时的pdb输出目录。

附注:手工下载windows symbols的方法
如果不想等到调试时才下载,也可用通过windbg自带的symchk.exe工具下载windows系统的symbols,或者某个dmp文件所有相关模块的symbols,并且通过这个工具下载速度也会更快一些,具体方法如下:
1. 下载dmp文件所有相关模块的symbols,缓存到共享路径,便于其它人快速下载。
"C:\Program Files\Debugging Tools for Windows (x86)\symchk.exe" /id c:\MyApplication.dmp /s SRV*\\symbols_server\WinSymbols\*http://msdl.microsoft.com/download/symbols

2. 下载某个已运行进程所有相关模块的symbols,缓存到共享路径,便于其它人快速下载。
"C:\Program Files\Debugging Tools for Windows (x86)\symchk.exe" /ie qq.exe /s SRV*\\symbols_server\WinSymbols\*http://msdl.microsoft.com/download/symbols

3. 下载某个exe/dll文件对应的symbols,例如user32.dll,输入命令行:
"C:\Program Files\Debugging Tools for Windows (x86)\symchk.exe" c:\windows\system32\user32.dll /s SRV*c:\symbols\*http://msdl.microsoft.com/download/symbols

4. 下载整个目录下(例如system32)所有模块的symbols:
"C:\Program Files\Debugging Tools for Windows (x86)\symchk.exe" /r c:\windows\system32\ /s SRV*c:\symbols\*http://msdl.microsoft.com/download/symbols

微软符号服务器下载符号总结相关推荐

  1. Visual Studio 2012 调试程序加载缓慢,提示正在下载符号

    当在Visual Studio 2012中调试程序的时候,整个过程加载缓慢,并且有类似"正在下载符号......"的提示. 这是因为Visual Studio在调试的时候,默认从M ...

  2. 微软WSUS服务器 3.0安装配置详解

    公司之前用的是Wsus 2.0,前段时间Wsus3.0出来之后系统自动更新到了3.0版本.前几天调整服务器,需要把 Wsus服务器重新安装到另一台服务器上,刚好可以彻底的尝试一下Wsus3.0服务了. ...

  3. vs2015开发c语言 简书,微软符号服务器_NT_SYMBOL_PATH给VS调试带来的隐藏坑

    昨天我碰到一个非常坑的问题,问题是这样的: 我机子上已经装了vs2015和vs2010,vs2010和vs2015都跑得很溜,没有啥异常现象.然后昨天我不知哪里来的突然想法:机子上有些资源需要打包收藏 ...

  4. vs2015微软服务器加载符号,Visual studio 正在从以下位置加载符号:Microsoft符号服务器 尝试取消禁用后续符号加载...

    正在从以下位置加载符号:Microsoft符号服务器   尝试取消禁用后续符号加载 进入VS---工具---选项----调试----符号,看右边有个"Microsoft符号服务器" ...

  5. 微软符号服务器opencv的符号,Opencv Mat类详解和用法1

    Mat OpenCV 自 2001 年出现以来.在那些日子里库是围绕C接口构建的.在那些日子里,他们使用名为IplImage C 的结构在内存中存储图像.这是您将在大多数较旧的教程和教材中看到的那个. ...

  6. windows符号服务器地址

    当调试windows程序的时候,有时候会需要一些符号文件.系统的公有符号文件微软都是提供的,只需在调试器中设置即可,在下次调试时,调试器会自动从网上下载需要的符号文件.可以使用符号文件的调试器有win ...

  7. 符号服务器 作用,[原创]搭建自己的符号服务器(一)——啰嗦篇

    啰啰嗦嗦的一篇.. 注意:如果你要找的是微软符号服务器,不用往下看了... 当发生应用异常崩溃.驱动蓝屏时,无论是测试环境,还是生产环境,分析dump文件通常是快速定位问题的一个最佳选择(前提是生成了 ...

  8. windbg下载符号方法

    配置windbg符号路径 第一种: 我们点击菜单中的File,找到Symbols Search Path 我的path中是填写的 SRVc:\mysymbolshttp://msdl.microsof ...

  9. windows 符号服务器被墙了

    最近调试程序需要下载windows符号,不过反复配置后,都是下载失败.鉴于windows符号服务有不定期抽风连不上的习惯,就暂时没管. 今天又碰到需要下载windows符号的情况,心血来潮挂上梯子试了 ...

最新文章

  1. VTK:PolyData 的轮廓用法实战
  2. CPU的高速缓存存储器知识整理
  3. ASP.NET Core+Quartz.Net实现web定时任务
  4. 7-58 是否完全二叉搜索树 (30 分)
  5. mysqld_safemysqld区别
  6. POJ 2723 2-SAT
  7. C语言文件读写操作总结
  8. NetworkComms.Net github下载地址
  9. 中国最经典广告语大全
  10. 手把手教大家基于开源的GB28181-WVP搭建一个视频监控系统
  11. 基础-02-日语单词的词性与分类
  12. 盘一盘 Python 特别篇 18 - 时区|夏令时
  13. 高数 | 【重积分】线面积分880例题
  14. java随机点名器(仅供娱乐)
  15. php百度云5秒盾,cloudflare如何自定义5秒盾页面教程
  16. 诺基亚symbian 手册汇编
  17. Lucas Kanade 光流法(来自wiki 百科)
  18. 非常实用的cmd命令
  19. 使用python获取股票“净利润同比增长率”等“上市公司成长能力”数据
  20. 机房收费系统 项目总结

热门文章

  1. 常见排序算法 稳定性分析
  2. Qt 笔记:Qt中的IO操作
  3. 小程序 · 监听页面返回
  4. Genymotion——问题集(WIN10)
  5. ZPPFM 支付平台资金管理:在支付宝开放平台创建应用查询支付宝商家账户余额
  6. 科技力量赋予 SK5 代理 HTTP 代理 IP 网络无限可能
  7. Android单元测试之 Mockito
  8. win7 mac 共享文件
  9. 【分享】网络游戏加速的实现
  10. 中国智能家居市场销售态势分析与投资策略研究报告2022-2028年