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