4
我發現file> = 5.30或gcc> = 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),包都是最新的。
友情提示:「包都是最新的。」並不意味着編譯器對編譯器版本是什麼或提供任何提示。對於我們所知的所有情況,分發本可以停止更新GCC 3.3.4。這將是極端的,但是幾個主要發行版似乎已經停止在4.8和4.9。最好運行'g ++ -v',並在需要時將版本添加到將來的問題中。 – user4581301
你說得對,但我在問題的頂部已經添加了版本信息。最後的說明應該提供背景信息。 – Peter