参考答案
结论:无调试信息时,gdb只能进行汇编级调试,通过地址断点、反汇编和寄存器/内存查看来分析程序。核心要点:1. 启动gdb加载程序,用file确认无符号;2. 用nm或objdump -t查看ELF导出符号(如main),或从入口_start开始;3. 用b *0x地址 设置裸地址断点,如b *0x401136;4. 用disassemble 地址 反汇编函数,或layout asm分屏看汇编;5. 运行后用si/ni单步汇编指令,info reg查看寄存器,x/格式地址 检查内存;6. 通过调用约定(如x86-64的rdi/rsi)推断参数与栈布局。原理:调试信息(DWARF)在编译时由-g生成,缺失后gdb无法关联源码行,只能依赖ELF符号表和指令流;通过反汇编将机器码转成可读汇编,结合ABI手动追踪控制流与数据。示例:gdb ./a.out -> (gdb) b *main+0 -> (gdb) run -> (gdb) disas。