如何最好地确定二进制文件是否包含 STAB 或 DWARF 调试信息?

How do I best determine if a binary contains STAB or DWARF debug information?

谈到ELF,有两种附带的调试格式非常受其他人欢迎,即STAB and DWARF。我想要一种简单的方法来确定给定的二进制文件是否包含一种形式或另一种形式的调试信息,最好不必检查部分名称(.stab 等)。

完成此任务的好方法是什么?

When it comes to ELF, two accompanying debugging formats are overwhelmingly popular

STABS 格式在过去 10 年中未被 ELF 平台上的任何当前编译器默认使用。绝对不是"overwhelmingly popular".

告诉方式:

readelf -WS ./a.out | egrep '\.(stab |debug)'

如果二进制文件有 STABS,您将看到 .stab 部分。如果您有 DWARF,您将看到 .debug_info.debug_line 等。如果您根本没有调试信息,您将什么也看不到。

preferably without having to inspect section names

不看部分就无法完成:这些部分的存在与否决定了二进制文件是否包含调试信息。