2017-02-21 60 views
4

我發現file> = 5.30gcc> = 6.3已經改變了它的行爲。當我編譯一個像hello-world一樣的基本程序時,文件的輸出表明elf-executable包含某種「debug_info」。爲什麼文件命令狀態,該可執行文件包含「debug_info」

來源:

#include <iostream> 
using namespace std; 

int main(int argc, char* argv []) { 
     cout << "Hello world.\n"; 
     return 0; 
} 

編譯:

$ g++ -o hello hello.cpp # notice, no option "-g" 

檢查:

​​

我不熟悉readelf。 A readelf -S你好| grep -i debug表示在沒有「-g」編譯時沒有調試信息。如果使用選項「-g」編譯,我看到這一點,這看起來對我罰款:

[27] .debug_aranges PROGBITS   0000000000000000 0000107c 
    [28] .debug_info  PROGBITS   0000000000000000 000010ac 
    [29] .debug_abbrev  PROGBITS   0000000000000000 000038ce 
    [30] .debug_line  PROGBITS   0000000000000000 00003e54 
    [31] .debug_str  PROGBITS   0000000000000000 00004186 

我以爲沒人我GCC發佈的編譯過程中所隱藏的配置標誌,總是包含某種的調試信息。因此,util 文件的行爲可能已發生變化。 文件是什麼意思與「調試信息」?

信息:
我在X86_64上運行GNU/Linux(Archlinux),包都是最新的。

+0

友情提示:「包都是最新的。」並不意味着編譯器對編譯器版本是什麼或提供任何提示。對於我們所知的所有情況,分發本可以停止更新GCC 3.3.4。這將是極端的,但是幾個主要發行版似乎已經停止在4.8和4.9。最好運行'g ++ -v',並在需要時將版本添加到將來的問題中。 – user4581301

+0

你說得對,但我在問題的頂部已經添加了版本信息。最後的說明應該提供背景信息。 – Peter

回答

6

這是一個bug它是fixed。默認值是1(意思是'真'),固定將它改爲0(意思是'假')。

相關問題