首页
社区
课程
招聘
[原创]关于WinDbg的符号文件设置
发表于: 2019-4-27 12:00 16537

[原创]关于WinDbg的符号文件设置

2019-4-27 12:00
16537

第一种方法:

也是最简单办法是在WinDug界面按CTRL+S
SRV*D:\symbols_folder\i386*http://msdl.microsoft.com/download/symbols              //srv*本地缓存路径*Microsoft 公共符号服务器
设置完毕之后在 
kd> .reload
Connected to Windows XP 2600 x86 compatible target at (Sat Apr 27 11:35:53.812 2019 (GMT+8)), ptr64 FALSE
Loading Kernel Symbols
一般它会自动匹配你的系统 ,之后有个漫长的等待(从 Microsoft 公共符号服务器 进行缓存到本地),之后会自动完毕。

第二种方法:
有的第一种方法(因为网络原因导致有的符号文件没有缓存进去)所以出现我之前遇到的情况
查不到KiAttachProcess
我们可以通过手动下载符号文件
至于系统版本信息我们可以通过在需要被调试的机器里打开CMD输入:dxdiag
SRV*D:\symbols_folder\i386*http://msdl.microsoft.com/download/symbols              //srv*本地缓存路径*Microsoft 公共符号服务器
设置完毕之后在 
kd> .reload
Connected to Windows XP 2600 x86 compatible target at (Sat Apr 27 11:35:53.812 2019 (GMT+8)), ptr64 FALSE
Loading Kernel Symbols
一般它会自动匹配你的系统 ,之后有个漫长的等待(从 Microsoft 公共符号服务器 进行缓存到本地),之后会自动完毕。

第二种方法:
有的第一种方法(因为网络原因导致有的符号文件没有缓存进去)所以出现我之前遇到的情况
查不到KiAttachProcess
我们可以通过手动下载符号文件
至于系统版本信息我们可以通过在需要被调试的机器里打开CMD输入:dxdiag

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 3
支持
分享
最新回复 (17)
雪    币: 1055
活跃值: (412)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
山总请的杀手正在路上
2019-4-27 12:18
0
雪    币: 2361
活跃值: (324)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
哈哈,我来补充点:
微软现在新版系统已不提供单独symbol包下载了,得在线下,下载方法:
symchk.exe" /r c:\windows\system32\ /s SRV*c:\symbols\*http://msdl.microsoft.com/download/symbols
C:\Symbol就是下到的Symbol包。
另提供下单独能下载的包(不包括Win10)
Windows 8.1 & Windows Server 2012 R2(6.3.9600)
https://download.microsoft.com/download/D/1/A/D1AD0063-7ECE-4589-A846-4971B56AFF09/Windows_winblue.9600.16384.130821-1623.woachk.Symbols-IRM_SYM_WOACHK_EN-US_MSI.msi

https://download.microsoft.com/download/D/1/A/D1AD0063-7ECE-4589-A846-4971B56AFF09/Windows_winblue.9600.16384.130821-1623.woafre.Symbols-IRM_SYM_WOAFRE_EN-US_MSI.msi

https://download.microsoft.com/download/D/1/A/D1AD0063-7ECE-4589-A846-4971B56AFF09/Windows_winblue.9600.16384.130821-1623.x64chk.Symbols-IRM_SYM_X64CHK_EN-US_MSI.msi

https://download.microsoft.com/download/D/1/A/D1AD0063-7ECE-4589-A846-4971B56AFF09/Windows_winblue.9600.16384.130821-1623.x64fre.Symbols-IRM_SYM_X64FRE_EN-US_MSI.msi

https://download.microsoft.com/download/D/1/A/D1AD0063-7ECE-4589-A846-4971B56AFF09/Windows_winblue.9600.16384.130821-1623.x86chk.Symbols-IRM_SYM_X86CHK_EN-US_MSI.msi

https://download.microsoft.com/download/D/1/A/D1AD0063-7ECE-4589-A846-4971B56AFF09/Windows_winblue.9600.16384.130821-1623.x86fre.Symbols-IRM_SYM_X86FRE_EN-US_MSI.msi

Windows 8 & Windows Server 2012(6.2.9200)
https://download.microsoft.com/download/D/6/A/D6A258F4-11DA-479A-8A30-F9EB0B2951F9/Windows_Win8.9200.16384.120725-1247.X86FRE.Symbols.msi

https://download.microsoft.com/download/D/6/A/D6A258F4-11DA-479A-8A30-F9EB0B2951F9/Windows_Win8.9200.16384.120725-1247.X86CHK.Symbols.msi

https://download.microsoft.com/download/D/1/7/D17C7B6B-D0A0-4918-9B83-82024D2EC9D2/Windows_Win8.9200.16384.120725-1247.x64FRE.Symbols.msi

https://download.microsoft.com/download/D/1/7/D17C7B6B-D0A0-4918-9B83-82024D2EC9D2/Windows_Win8.9200.16384.120725-1247.x64CHK.Symbols.msi

Windows 7SP1 & Windows Server 2008R2 SP1(6.1.7601)
https://download.microsoft.com/download/0/A/F/0AFB5316-3062-494A-AB78-7FB0D4461357/Windows_Win7SP1.7601.17514.101119-1850.X86FRE.Symbols.msi

https://download.microsoft.com/download/0/A/F/0AFB5316-3062-494A-AB78-7FB0D4461357/Windows_Win7SP1.7601.17514.101119-1850.X86CHK.Symbols.msi

https://download.microsoft.com/download/0/A/F/0AFB5316-3062-494A-AB78-7FB0D4461357/Windows_Win7SP1.7601.17514.101119-1850.AMD64FRE.Symbols.msi

https://download.microsoft.com/download/0/A/F/0AFB5316-3062-494A-AB78-7FB0D4461357/Windows_Win7SP1.7601.17514.101119-1850.AMD64CHK.Symbols.msi

https://download.microsoft.com/download/0/A/F/0AFB5316-3062-494A-AB78-7FB0D4461357/Windows_Win7SP1.7601.17514.101119-1850.IA64FRE.Symbols.msi

https://download.microsoft.com/download/0/A/F/0AFB5316-3062-494A-AB78-7FB0D4461357/Windows_Win7SP1.7601.17514.101119-1850.IA64CHK.Symbols.msi

Windows 7 & Windows Server 2008(6.1.7600)
https://download.microsoft.com/download/7/F/B/7FBF7E6A-D0DE-442A-A683-4F9885A96FC9/Windows_Win7.7600.16385.090713-1255.X86FRE.Symbols.msi

https://download.microsoft.com/download/7/F/B/7FBF7E6A-D0DE-442A-A683-4F9885A96FC9/Windows_Win7.7600.16385.090713-1255.X86CHK.Symbols.msi

https://download.microsoft.com/download/F/1/1/F11206A1-C532-4C9E-86FF-1261A693AA53/Windows_Win7.7600.16385.090713-1255.X64FRE.Symbols.msi

https://download.microsoft.com/download/F/1/1/F11206A1-C532-4C9E-86FF-1261A693AA53/Windows_Win7.7600.16385.090713-1255.X64CHK.Symbols.msi

Windows的版本:chk和fre的区别
chk表示Checked,fre表示Free。主要的区别在于,checked build有traces和asserts,而free build没有。

但是,checked和free是怎么出现的呢?因为传统的用词一般是debug和retail(或者release)。

当Windows NT还处在开发阶段的时候,开发组的人还在用“debug”和“retail”。Debug和Retail的不同在于编译时的选项:

Compiler Optimization:开、关
Debug Traces:开、关
Assertions:开、关
Sanity checks:开、关
传统来说,Debug是“Optimization:关,Traces:开,Assertions:开”,Retail是“O:开,T:关,A: 关”。后来,NT团队加入了Sanity checks的选项。本来,Sanity check在内部版本中有,在发布的时候会移除掉。

于是,NT的团队就有了“O:开,T:开,A:开,S:开”,“O:开,T:关,A:关,S:开”和“O:开,T:关,A:关,S:关”三种Build。

最后一种是传统的“retail” build。那么,前两种叫什么build呢?第一种Optimization是开着的,所以不是传统的“debug”,后一种Sanity check是开着的,所以不是传统的“retail”。

为了区别这些build的不同。讨论以后,NT团队决定用“checked”表示“O:开,T:开,A:开,S:开”,“Free”表示“O:开,T:关,A:关,S:开”。Checked是因为所以的check都打开了,Free是因为“check free”。

后来,随着NT 3.1项目进展,团队认识到:

他们其实根本就不会去测试“retail” build,
他们对free build进行了性能测试,结果发现它能够满足性能要求。
于是,团队把free build作为最终版本发布。


什么是已检验版本的检验
已检验版本包含大量调试检验,系统中通常未提供这些检验。这些检验包括:

参数验证检验
这些检验可以确保 Windows 操作系统代码使用尽可能少的开销正常运行。因此,基于 NT 的操作系统实现如下策略:所有以内核模式运行的组件(包括驱动程序)均隐式“信任”彼此。从一个内核模式组件传递到另一个内核模式组件的参数(在函数调用中传递的参数)所需进行的验证通常最少。已检验版本的操作系统还可实现许多额外的参数验证检验。

有关操作系统正确性和一致性的内部检验
这些检验通常会验证操作系统中关键算法和数据结构的正确性。此类型检验还可由某个 Windows 开发者在操作系统调试过程中插入,以帮助隔离复杂问题。

信息性检验和跟踪输出
这些检验,以及调试程序中显示的输出结果,都旨在帮助驱动程序或其他系统级别组件的调试。通常,这些类型的检验必须通过在相应组件内部设置调试标志(通常使用调试程序)来分别启用。此类检验及其调试输出的存在与否因操作系统的版本而异。当存在此类检验时,它们通常被记录在 Microsoft 知识库文章中。

已检验版本中提供的多数检验可确定参数或数据结构中的值是否在预期的典型范围以内。在系统的操作过程中,在某些极罕见的情况下,特定参数或值可能在典型预期范围之外。

因此,即使已检验版本中某个检验失败,并不一定意味着发生了灾难性故障。实际上,已检验版本中失败的检验不一定意味着存在问题。它仅仅表明特定的检验失败了。你必须能够解释失败的原因。

请勿忽略已检验版本所识别的问题。使用已检验版本成功调试驱动程序的关键在于:你可以解释已检验版本所发现的每个失败的原因。

操作系统的已检验版本使用各种方法通知所发现的问题。这些方法包括 ASSERT 故障、断点和调试程序消息。所有这些方法均导致来自内核调试程序的输出。因此,要想获得理想效果,必须使用连接的内核模式调试程序(如 WinDbg 或 KD)运行已检验版本。

操作系统的已检验组件与完全相同的未检验组件相比,前者所包含的优化较少,但包含的调试检查更多。因此,已检验组件的运行速度比相同未检验组件的运行速度要慢得多。

驱动程序编写人员务必牢记,这种执行速度的减慢可能导致代码路径之间计时关系的改变。因此,已检验版本可能会隐藏一些在显露在未检验版本中的计时问题(如争用条件或死锁)。因此,在发布你的驱动程序之前,你必须同时在操作系统的未检验版本和已检验版本上测试你的所有驱动程序。

虽然已检验版本和驱动程序验证程序提供的一些检查存在重叠,但最好将这两者视作提供互补级别的检查。使用已检验版本对驱动程序的测试不能取代使用驱动程序验证程序进行的测试。与此类似,使用驱动程序验证程序进行测试与使用已检验版本进行测试时的测试范围级别并不完全相同。

当驱动程序验证程序在已检验版本上运行时,它通常会在检测到问题时在调试程序中显示额外信息。此外,当附加了调试程序时,驱动程序验证程序通常会在使用缺陷检查指示中止系统之前运行断点。此断点让你有机会在驱动程序验证程序引发系统崩溃之前检查系统状态并调试驱动程序。
2019-4-27 13:01
3
雪    币: 2361
活跃值: (324)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
symchk是Windbg带的工具,在WinDBG目录里。
2019-4-27 13:01
0
雪    币: 421
活跃值: (44)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
少尉 symchk是Windbg带的工具,在WinDBG目录里。
长知识了 !!谢谢大佬的分享
2019-4-27 13:21
0
雪    币: 13
活跃值: (53)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
这个符号文件 能否用到其他程序中?
OD CE 这些调试工具 在附加程序后 能把函数地址转换成 函数名字  想问下是使用的这个符号文件吗?
还是 通过函数名 获取函数地址 创建个表 ?
2019-4-27 20:12
0
雪    币: 421
活跃值: (44)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
chaogelai 这个符号文件 能否用到其他程序中? OD CE 这些调试工具 在附加程序后 能把函数地址转换成 函数名字 想问下是使用的这个符号文件吗? 还是 通过函数名 获取函数地址 创建个表 ?
感觉可以给系统打补丁,这应该属于系统不隶属于其他程序。
2019-4-27 22:52
0
雪    币: 339
活跃值: (518)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
最近找windows xp sp1的符号文件找苦了,有人可以搞到这个么?
2019-4-30 21:58
0
雪    币: 13
活跃值: (53)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
mysqld 感觉可以给系统打补丁,这应该属于系统不隶属于其他程序。
想实现CE OD  CALL 地址解析成函数名的功能。 我现在暂时使用了读导出函数 建个表  对照来解析。 不知道有没有更好的办法
最后于 2019-5-5 00:27 被chaogelai编辑 ,原因:
2019-5-5 00:26
0
雪    币: 2726
活跃值: (1110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
那个xp的离线符号表 能分享下么 上面写的xp的符号表地址已经失效了...
2020-2-26 13:23
0
雪    币: 2726
活跃值: (1110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
少尉 哈哈,我来补充点: 微软现在新版系统已不提供单独symbol包下载了,得在线下,下载方法: symchk.exe" /r c:\windows\system32\ /s SRV*c:\s ...
有没有那个xp的离线符号表....
2020-2-26 16:24
0
雪    币: 47
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
收藏了,顺求win7 符号表。。。。。QAQ
2020-3-27 09:24
0
雪    币: 832
活跃值: (312)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
叶小羽 收藏了,顺求win7 符号表。。。。。QAQ
2楼不是给出来了吗
2020-3-27 13:04
0
雪    币: 47
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
xxos 2楼不是给出来了吗
说错了,xp的。。。QAQ
2020-3-28 10:05
0
雪    币: 832
活跃值: (312)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
叶小羽 说错了,xp的。。。QAQ
找到了吗 百度就能搜到 要不我发你一份  
2020-4-13 22:22
0
雪    币: 47
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
xxos 找到了吗 百度就能搜到 要不我发你一份
找到了,可是xp的用不了。。哇!!求发一份,感谢!!Thanks♪(・ω・)ノ
2020-4-14 08:17
0
雪    币: 1567
活跃值: (905)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
少尉 哈哈,我来补充点: 微软现在新版系统已不提供单独symbol包下载了,得在线下,下载方法: symchk.exe" /r c:\windows\system32\ /s SRV*c:\s ...
师傅请问一下,ERROR: Symbol file could not be found.  Defaulted to export symbols for ntkrnlpa.exe,为什么我提示这个错误?
2020-4-22 21:36
0
雪    币: 171
活跃值: (519)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
18
少尉 哈哈,我来补充点: 微软现在新版系统已不提供单独symbol包下载了,得在线下,下载方法: symchk.exe" /r c:\windows\system32\ /s SRV*c:\s ...
真感谢有你这么好的人~~ 很有帮助,感谢
2020-8-7 09:00
0
游客
登录 | 注册 方可回帖
返回
//