引自这里.
零售符号和检查符号之间有什么区别?
Gre*_*ill 12
通常,"零售"和"已检查"之间的差异类似于"发布"与"调试"构建.Microsoft提供了两个不同的内核,一个用于常规编译,另一个用于额外的调试信息.两个不同的版本也有两个不同的符号表.
小智 5
如果您是大学的IT或计算机科学专业的学生(或者您碰巧可以访问MSDN的电子学院软件),您可能可以访问Windows Vista/7的特殊调试/检查版本.软件开发和工程行业的一些专业人员也可能安装了特殊的调试版本.否则,无论您遇到家庭版还是专业版 - 甚至企业版和商业版 - 它很可能都是零售版.所有这些版本都需要零售版本的调试符号.但是,如果安装了Windows的调试/检查版本,则需要选中已检查的调试符号.
正如Greg所解释的那样,调试符号基本上是一个地址.据我所知,它们基本上是内存中函数或项的正确名称,因此当用户调试进程或查看callstack时,他或她将能够看到可用信息而不是地址偏移.
格雷格已经回答了这个问题,但我会尽力详细说明.Windows的零售和调试版本需要不同版本的符号,因为操作系统文件的编译方式不同,以包含更多有用的调试信息.这使得符号的地址移动得如此轻微,因此需要不同的包来正确识别内存中的所有内容.
我很困惑的一件事是为什么被检查的符号包更小.我原以为它会更大.大师可能知道原因.说到这,我想说清楚我不是调试器.我只是着迷于它背后的科学.尽管如此,我希望这能帮到你.
祝你好运gdb.