2015-08-28 29 views
0

我使用g ++編譯器編譯了產品源代碼,並提供了選項-ggdb以獲得對gdb調試的訪問權限。但它的文件大小要比沒有-ggdb編譯的文件大一些。請解釋一下-ggdb包含在實際的二進制文件中?即沒有-ggdb選項的二進制編譯。爲什麼g ++編譯時使用-ggdb選項升級二進制文件的大小?

+0

當您添加'-g'選項(或其任何「sub」選項,如'-ggdb'),編譯器和鏈接器會添加所有*所需的調試信息。所有符號名稱,行號信息(包括定義/聲明符號的位置),到源(但不是源自身)的鏈接,可能還有更多。 –

回答

0

請解釋一下-ggdb包含在實際的二進制文件中?

查看readelf -WS a.out對兩個二進制文件的輸出。

你會發現,GCC增加了一些大.debug_*部分,其中包含調試器代碼地址,以便在二進制映射到源文件和行,數據地址變量名,等等,等等所需要的信息

相關問題