温馨提示×

centos反汇编指令怎么排查

小樊
41
2026-09-15 07:29:02
栏目: 智能运维

在 CentOS 上“反汇编排查问题”一般分几种场景:

  • 排查程序崩溃 / 段错误(core dump)
  • 分析二进制(无源码)行为
  • 定位某条指令或函数异常

下面按实用流程给你一套在 CentOS 上常用的反汇编与排查方法。


一、基础工具准备(CentOS)

yum install -y gdb binutils elfutils

常用工具:

  • gdb:调试 + 反汇编
  • objdump:静态反汇编
  • readelf:ELF 结构分析
  • nm / strings:符号 & 字符串

二、用 objdump 做静态反汇编

1️⃣ 反汇编整个可执行文件

objdump -d ./app > app.asm

2️⃣ 只看某个函数

objdump -d ./app | grep -A 50 '<main>:'

3️⃣ 反汇编 + 源码(如果有调试信息)

objdump -S ./app

需要编译时加 -g


三、用 gdb 动态反汇编(最常用)

1️⃣ 启动 gdb

gdb ./app

2️⃣ 查看函数反汇编

disassemble main

或更详细的:

disassemble /m main

3️⃣ 单步执行汇编

start
stepi

查看寄存器:

info registers

查看某地址:

x/10i $pc

四、程序崩溃 / core dump 排查(重点)

1️⃣ 开启 core 文件

ulimit -c unlimited

确认:

cat /proc/sys/kernel/core_pattern

2️⃣ 程序崩溃后加载 core

gdb ./app core

3️⃣ 查看崩溃位置

bt

反汇编崩溃点:

disassemble

看寄存器:

info registers

五、定位某个地址或符号

1️⃣ 查看符号

nm ./app | grep func_name

2️⃣ 查看 ELF 信息

readelf -h ./app
readelf -S ./app

3️⃣ 查看字符串(常用于恶意程序)

strings ./app | less

六、常见排查思路总结

段错误

  • bt 看调用栈
  • disassemble 看崩溃指令
  • 检查指针 / 数组越界

死循环 / CPU 高

  • gdb attach pid
  • bt + disassemble

逻辑不对但无源码

  • objdump -d
  • 配合 strings

七、示例:main 函数反汇编片段

00000000004005b6 <main>:
  4005b6: push   %rbp
  4005b7: mov    %rsp,%rbp
  4005ba: mov    $0x0,%eax
  4005bf: pop    %rbp
  4005c0: ret

如果你有具体的报错信息 / core / 程序行为,可以直接贴出来,我可以帮你一步步反汇编定位。

0