使用OD加载微软符号库
Windbg可以加载微软符号库,如果本地没有符号,可以自动去微软网站上下载对应的PDB文件辅助调试分析。
PS:WingDbg下的符号加载,SRV*c:/windows/symbols*http://msdl.microsoft.com/download/symbols
Ring3下的OD也具有这个功能,当然需要StrongOD来帮助了。
1.在WingDbg目录下拷贝dbgeng.dll,dbghelp.dll,srcsrv.dll,symbolcheck.dll,symsrv.dll,symsrv.yes,一共6个文件至OD目录下。
2.打开OD,设置符号路径。调试--->选择符号路径。
3.设置StrongOD的插件选项。选择加载符号。
PS:有的时候程序加载很慢,只需要把插件选项关闭,即可恢复。主要是联网下载PDB符号文件。
微软对于这个符号表的说明:
当您开始调试故障转储文件或应用程序时,Windows 调试器将检查它加载的模块的符号信息是否位于本地文件夹中。如果模块的符号信息不在本地文件夹中,WinDbg 将尝试从 Symbol Server 下载相应的符号文件或文件。如果您在具有不同文件版本的计算机上调试应用程序时使用相同的本地高速缓存,则将下载不同版本的符号,并将其同第一批符号存储在一起。SymStore 格式会按照映像的时间戳和大小(或校验和)来存储文件。因此,来自不同产品版本的符号可以并行共存。由于下载符号文件需要一些时间,因此请记住,当您第一次调试应用程序时,调试器可能看上去停止了响应(挂起)。这是因为必须下载系统 DLL 的大多数符号文件(如 Ntdll.dll、Kernel32.dll 和其他文件)。
上图是没有添加符号表时候的函数调用显示。
下图是通过上述方法,载入符号表后的显示,显然更方便对程序进行分析。
符号表的概念和意义。
它的作用是将十六进制数转换为源文件代码行,函数名以及变量名称。符号表还包含程序使用的类型信息,调试使用这些类型信息可以获取原始数据,并将这些原始数据显示为在程序中所定义的结构或变量。
PDB--Program Database(VC6.0里面有这个选项,在Debuginfo 部分选择program Database),是现今最常用的一种符号格式,VC和VB都支持PDB,PDB符号是根据应用程序不同的链接方式,保存在单独的一个文件或多个文件中。
这个大概就是有关OD调试时候符号表的一些内容,还有两篇有关Softice和IDA的,链接如下:http://blog..net/vagrxie
平时不使用Softice,就暂时备份于此吧。