为什么file-command指出可执行文件包含“debug_info”

我发现文件> = 5.30gcc> = 6.3已经改变了它的行为。 当我编译一个像hello-world一样的基本程序时, 文件的输出表明elf-executable包含某种“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" 

检查:

 $ file hello # please scroll to the right hand-side, it is at the very end hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=d03b68ed8618fcb97094b18157054f7cc2030f3c, not stripped, with debug_info 

我不熟悉readelf 。 一个readelf -S你好| grep -i debug表示在没有“-g”编译时没有debugging信息。 如果用选项“-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 

我认为在构build我的gcc版本时,没有人使用隐藏的configuration标志,总是包含某种debugging信息。 所以可能这个util 文件的行为已经改变了。 “debugging信息”是什么意思?

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

这是一个错误 ,它是固定的 。 默认值是1(意思是“真”),固定值改为0(意思是“假”)。