繁体   English   中英

什么时候包括调试符号

[英]when are debug symbols included

在编译过程的哪个阶段实际生成调试符号。

如果我使用-g选项编译目标文件,那么它势在必行,无论内置什么目标文件(共享库,静态库,可执行文件),输出中都将始终包含调试符号? 如果在链接过程中未指定-g,则输出二进制文件是否将具有调试符号?

通常,-g是编译器选项,因为编译器知道正在使用哪些源代码行生成特定指令。

但是,某些链接器还要求您指定-g,并且根据链接器,您可能需要指定其他开关,因为至少在solaris上,它不会将所有调试信息都放入可执行文件中,并且调试器会找到.o文件中需要什么。

一切都取决于阅读链接器文档。

  1. 每个可重定位目标文件在.symtab节中都有一个符号表,其中包括有关程序中定义和引用的函数和全局变量的信息。 但是,与符号表在编译器内部不同, .symtab符号表不包含局部变量的条目。
  2. -g允许使用其他调试信息,例如行号 正如David指出的那样,默认行为取决于编译器和平台。
  3. 您可以参考此页面以获取更多详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM