2015-08-28 55 views
0

我使用g ++编译器编译了产品源代码,并提供了选项-ggdb以获得对gdb调试的访问权限。但它的文件大小要比没有-ggdb编译的文件大一些。请解释一下-ggdb包含在实际的二进制文件中?即没有-ggdb选项的二进制编译。为什么g ++编译时使用-ggdb选项升级二进制文件的大小?

+0

当您添加'-g'选项(或其任何“sub”选项,如'-ggdb'),编译器和链接器会添加所有*所需的调试信息。所有符号名称,行号信息(包括定义/声明符号的位置),到源(但不是源自身)的链接,可能还有更多。 –

回答

0

请解释一下-ggdb包含在实际的二进制文件中?

查看readelf -WS a.out对两个二进制文件的输出。

你会发现,GCC增加了一些大.debug_*部分,其中包含调试器代码地址,以便在二进制映射到源文件和行,数据地址变量名,等等,等等所需要的信息

相关问题