如何在没有文件,objdump或gdb的情况下知道二进制文件是否包含调试符号?

Voi*_*ter 5 c c++ linux debugging

我需要知道二进制文件中是否包含调试符号.它是一个生产系统,因此没有像file或objdump或等命令gdb.

可以在需要时提供更多信息.

操作系统:Debian

u__*_*u__ 5

可能你正在寻找像objdump这样的工具

假设我们有一个像这样的小程序

#include <stdio.h>

int main()
{
    printf("Hello ");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在正常编译

gcc example.c -o example
Run Code Online (Sandbox Code Playgroud)

现在让我们使用objdump工具检查调试符号的存在

objdump -h example | grep debug
Run Code Online (Sandbox Code Playgroud)

当然,我们找不到任何东西

现在让我们通过编译调试选项再试一次

gcc -g example.c -o example
objdump -h example | grep debug
 26 .debug_aranges 00000030  0000000000000000  0000000000000000  000008b0  2**0
 27 .debug_pubnames 0000001b  0000000000000000  0000000000000000  000008e0  2**0
 28 .debug_info   0000008b  0000000000000000  0000000000000000  000008fb  2**0
 29 .debug_abbrev 0000003f  0000000000000000  0000000000000000  00000986  2**0
 30 .debug_line   0000003f  0000000000000000  0000000000000000  000009c5  2**0
 31 .debug_str    00000087  0000000000000000  0000000000000000  00000a04  2**0
 32 .debug_pubtypes 00000012  0000000000000000  0000000000000000  00000a8b  2**0
Run Code Online (Sandbox Code Playgroud)

男人 - 一个objdump可能会帮助更多