win32-简单建立自己的符号(PDB)服务器
来源:互联网 发布:手机进不了知乎 编辑:程序博客网 时间:2024/05/18 21:47
开发团队中,随着版本的增多,用户的增多,修改遗留问题变得异常困难,pdb是个好东西,符号服务器更是个好东西。给自己的开发团队建立一个简单的符号服务器会损失不好,俗话说得好嘛,“磨刀不误砍柴工”。
基本需求
- 硬件一台,要求很简单:有操作系统,硬盘足够足够足够大(请注意用了三个足够)
- 工具软件:symstore.exe(Debugging Tools for Windows中带有)
- 工程的属性中设置了输出调试信息,也就是会产生pdb文件
添加符号版本
- 命令行格式
- symstore add /r /f
"PDB file path" /s "Symbol server path" /t "Product Name" /v "Product Version" /c "Comment"
- 命令行举例
- symstore add /r /f D:\Develop\DLSolution\PDB\*.pdb /s \\symserver\symbols /t "DylanToolkits" /v "5.1.34.090710" /c ""
- 参数简单说明
- symstore add 代表执行添加一组symbol到符号服务器的命令
- /r 递归搜索/f所指定的目录中的所有文件
- /f 需要查找pdb文件的目录,按照标准文件名通配方式
- /s 符号服务器目录
- /t 产品名称,此名称会出现在history.txt中
- /v 产品版本,可以通过该版本来建立同源码库的联系(调试的时候你总得看源代码吧,用这个版本号去检索你的源码库,找到合适的源码),此名称会出现在history.txt中
- /c 注释,爱写啥写啥,此名称也是会出现在history.txt中
- 影响
- 会在服务器目录下的指定pdb目录下添加一个新目录,该目录按照一定的算法(算法自己另外去google)命名,然后在下边放置刚刚添加的pdb文件,比如,如果有一个DLXMLKitU.pdb文件被执行上述命令时发现,那么执行完成后,会将该文件拷贝到:\\symserver\symbols\DLXMLKitU.pdb\68EB3547BCC044CB9FDE4CD4
B6AA983B1\DLXMLKitU.pdb。当然,会为每一个找到的pdb文件都拷贝一次,如果相同的pdb文件已经存在,则会覆盖服务器上之前的文件。(每个pdb会增加一个影响) - 会在服务器的管理目录下(形如\\symserver\symbols\000Admin)生成一个新的ID文件,比如“0000000002”,无扩展名。该文件记录此次之行add操作增加的所有pdb文件,每行一个pdb记录,指明这个pdb文件的本地源和服务器目标位置,形如: "DLXMLKitU.pdb\68EB3547BCC044CB9FDE4CD4
B6AA983B1","D:\Develop\DLSolution\PDB\DLXMLKitU.pdb" - 会修改历史记录文件(\\symserver\symbols\000Admin\History.txt),该文件每行代表一次add或者del操作,如执行上述命令行,产生的历史记录行信息形如:0000000002,add,file,07/10/2009,14:28:09,"DylanToolkits","5.1.34.090710","", 分别记录执行此次操作影响的ID号,操作类型,日期时间,产品名称,版本号,备注信息;
- 会影响其他位于000Admin目录下的文件,可以不关心。
删除符号版本
- 命令行格式:
- symstore del /i
"Operate ID number" /s "Symbol server path"
- 命令行举例:
- symstore del /i 0000000001 /s \\symserver\symbols
- 参数简单说明
- symstore del 代表执行删除一批pdb文件的操作
- /i 需要删除的pdb文件,执行添加这批文件是产生的ID号,位于Admin目录中
- /s 符号服务器目录
- 影响
- 会将服务器的管理目录下(形如\\symserver\symbols\000Admin)的指定ID号的文件改名,在名字后边加后缀.deleted,形如,0000000001.deleted;
根据ID号文件中的每一行,删除符号服务器目录下的指定文件,比如,会根据0000000001中的某一行"DLXMLKitU.pdb\8A4D71F4E9964FE5A3600042 7E10112B1","D:\Develop\DLSolution\PDB\DLXMLKitU.pdb" ,删除文件:\\symserver\symbols\DLXMLKitU.pdb\8A4D71F4E9964FE5A36000427E10112B1\DLXMLKitU.pdb; - 修改历史记录文件(\\symserver\symbols\000Admin\History.txt),增加一行记录,形如:0000000003,del,0000000001;
- 会影响其他位于000Admin目录下的文件,可以不关心。
使用符号服务器调试
- 使用Windbg作为调试工具,即Debugging Tools for Windows;
- 设置系统环境变量_NT_SYMBOL_PATH,指向调试服务器,如:\\symserver\symbols;
- 使用Windbg打开可执行文件,使用ld加载指定dll或者exe,使用lm查看符号文件表;
- 通过dll或者exe使用的符号库的路径,利用ID文件和History文件找到对应的源码版本号(当然也可以使用dll或者exe直接查找源码版本号);
- 从代码管理器下载对应版本号的代码,进行调试。
其他参考
- 符号服务器占用的磁盘空间会非常非常大,请注意硬盘配置;
- 可以使用Windows DFS技术来扩充磁盘空间;
- 参考symhttp.doc(Debugging Tools for Windows中带有);
- 可以利用IIS来建立Http模式的符号服务器,在世界各地调试你的代码,学习微软牛大了。
0 0
- win32-简单建立自己的符号(PDB)服务器
- 简单建立自己的符号服务器(转)
- 创建你自己的PDB符号服务器create your pdb symbol server
- 建立自己的网络电话服务器
- 建立自己的204服务器
- symstore.exe的使用:上传pdb文件至符号表服务器
- 自己建立最简单的系统(基于ok6410的)
- 自己建立最简单的系统(基于ok6410的)
- 用C#建立自己的Web服务器
- php 建立自己的SMTP服务器
- 建立自己简易的asp服务器
- [原创]建立自己免费的邮件服务器
- pdb 符号文件 如何生成的,作用
- 自己制作简单的服务器
- 简单快捷建立自己的caffe工程
- 首次使用Mina(使用Mina建立简单的服务器)
- Allegro建立符号 文件的意思及简单应用
- Python建立最简单的web服务器
- (API GUIDE 2)APP FUNDAMENTALS(应用基础)
- 矩阵乘法
- 练习--JSP定时刷新与统计用户在某页停留时间
- 详解Oracle hints PQ_DISTRIBUTE
- 消息传递机制
- win32-简单建立自己的符号(PDB)服务器
- 一个简单的命令对付乱动你电脑的熊孩子
- 灰度图像--图像分割 霍夫变换(Hough Transform)--直线
- awk实例_分析日志文件
- 基层管理能力修炼
- sniff mode及其参数的解释
- 【算法学习笔记】19.算法设计初步 最大子列和问题的三种方法
- Tomcat项目跨域问题(Tomcat7)
- [最新方法]终于解决了 Ubuntu 14.04 网络图标不见了 的问题|Ubuntu14.04 网络图标消失