调试符号
调试符号是被调试程序与源程序之间信息的桥梁,是在编译器生成可执行文件时,为支持调试而摘录的调试信息.
包含变量,类型,函数名,源代码行号等.
符号格式
符号表(又称“调试符”)的作用是将十六进制数转换为源文件代码行、函数名及变量名。符号表中还包含程序使用的类型信息。调试器使用类型信息可以获取原始数据,并将原始数据显示为程序中所定义的结构或变量。
SYS格式
SYM格式早期用于MS-DOS和16位Windows系统,现在只作为Windows9x的调试符使用(因为Windows9x系统的多数内核仍然是16位的).
COFF格式
COFF格式(CommonObjectFileFormat)是UNIX供应商所遵循规范的一部分,由WindowsNT2.1首次引I进使用。现在,微软逐渐抛弃了COFF格式,转而使用更为流行的符号表达式。
CodeView格式
CodeView(CV)最早是在MS-DOS下作为MicrosoftC/C++7的一部分出现的,现在已经支持Win32系统了。“CodeView”是早期微软调试器的名称,其支持的调试符号为C7格式。C7格式在执行模块中是自我包含的,符号信息与二进制代码混合(意味着调试文件会非常大).
PDB格式
PDB(ProgramDatabase)格式是现今最常用的一种符号格式,是微软自己定义的未公开格式。VisualC++和VisualBasic都支持PDB格式。与CV不同的是,PDB符号根据应用程序不同的链接方式保存在单独的或多个文件中。
DBG格式
DBG是系统调试符。有了系统调试符,调试器才可以显示系统函数名。DBG文件与其他符号格式不同,因为链接器并不创建DBG文件。DBG文件基本上是一个包含其他调试符的文件(例如包含COFF或C7等类型的调试符)。微软将操作系统调试符分配在DBG文件中。当然,这些文件中只包含公用信息和全局信息,例如ntdlll.dbg、kermel32.dbg等。
MAP格式
MAP文件是程序的全局符号、源文件和代码行号信息的唯一文本表示方法。MAP文件在任何地方、任何时候都可以使用,不需要程序支持,通用性极好。