use*_*354 2 compiler-construction gdb symbol-table
我正在研究编译器,我突然感到好奇的是,如果我用-g选项编译一个程序(比如说test.c),是否会创建一个带有符号表的实际文件并将其存储在某处或者它只是与可执行文件?
我是全新的,所以我真的在学习基础知识,对你们中的一些人来说可能听起来很愚蠢......对不起,请告诉我!
谢谢!
ELF目标文件格式(这是GCC产生许多共同平台)是可以包含许多不同类型的信息的一种容器格式.它始终包含外部链接符号的符号表(从库中定义或需要).此外,如果-g已指定,则ELF文件将包含调试器仅使用的大量信息,包括使用的所有本地符号.
您可以使用objdump --debugging或readelf --debug-dump以某种人类可读的格式查看调试信息.祝好运!
调试信息中通常不包含的一件事是实际的源代码.你会发现源文件的名称和对应于不同编译代码块的行号.调试器读取源代码文件以报告源代码行; 如果自编译可执行文件以来编辑了源代码文件,那将无法按预期工作.