我正在使用gdb做一些工作,并在文档中找到了“符号”的引用。这是外部(导出)可见变量的另一个词吗?
谢谢,
斯科特
答案 0 :(得分:4)
'符号'是包含函数和变量名称的符号标识符。
编译器/链接器在构建期间创建符号表,调试器使用它来为这些实体提供源级符号名称,而不是普通地址(因此您可能会遇到名称“符号调试器”) )。
答案 1 :(得分:3)
它们是代码symbol table中的条目,在编译时生成。变量,函数等
答案 2 :(得分:3)
符号是变量,函数,类的人名......没有符号,你会看到一切都只是地址上的数据。
例如:
带符号:
call printf
没有符号
call dword ptr 0x804480
答案 3 :(得分:0)
调试符号(可能由于“STABS”的方式而命名,例如,将它们存储在符号表中)也指上面的数据&超出了链接器所需的内容,例如行号/地址映射,类型信息,局部变量,并且不要忘记“静态”符号(链接器显然不需要这些符号,但这对于调试来说显然非常重要)。
当然,PE图像无论如何都不需要(或通常拥有)“符号表” - 只需导入/导出表。因此,在Windows的上下文中,“符号”和“调试符号”倾向于互换使用,以指代链接后遗留下来的任何符号;使用MS的工具链这些(几乎?)总是进入“pdb”文件。 (见pdb-ms。)