C++ 你能解释一下';c+中的s符号和调试符号+;世界?

C++ 你能解释一下';c+中的s符号和调试符号+;世界?,c++,windows,symbols,C++,Windows,Symbols,像可执行文件这样的二进制文件是由符号组成的,而调试符号就是其中的一种,这是真的吗 如何理解符号?呃,不是。可执行文件包含机器代码。以及全局变量的初始化值。在Windows上,调试信息通常存储在单独的文件a.pdb中。该文件中有关程序中函数或变量的调试数据称为符号 dbghelp API是一个非常高级的解释,如下所示: 首先,符号不是单独在C++世界中的。它们存在于一些高级语言的二进制文件中,例如C、C++等,它们是在用一些指定的设置建立的。让我们来看看定义 ‘int i=2;’ 在二进制文件中,

像可执行文件这样的二进制文件是由符号组成的,而调试符号就是其中的一种,这是真的吗


如何理解符号?

呃,不是。可执行文件包含机器代码。以及全局变量的初始化值。在Windows上,调试信息通常存储在单独的文件a.pdb中。该文件中有关程序中函数或变量的调试数据称为符号


dbghelp API是一个非常高级的解释,如下所示:

首先,符号不是单独在C++世界中的。它们存在于一些高级语言的二进制文件中,例如C、C++等,它们是在用一些指定的设置建立的。让我们来看看定义

‘int i=2;’

在二进制文件中,“i”只是一个内存位置(例如0x10203040),正在用2初始化。没有名为“i”的内存位置。名称“i”是通过二进制文件加载的调试符号(使用某些标志构建时)分配给该内存位置的,这些二进制文件维护“内存位置”到“源级别名称”的映射


例如,提供了用于存储调试符号信息的调试目录。这些在调试时非常有用,因为在没有此类调试符号的情况下,仅根据二进制0和1进行调试将是一项非常具有挑战性的任务。因此,当您调试使用调试标志构建的二进制文件(具有上述“i”定义)时,调试器知道内存位置“0x10203040”通过PE文件中的调试目录对应于“i”。

调试符号可以存储在PE的调试目录或单独的pdb文件中,对吗?