一、 启用核心转储文件生成(临时无限制)
ulimit -c unlimited
二、分析命令
1、加载core文件
gdb sender core.22301
# 或
gdb -c core.22301 sender
2、查看堆栈跟踪
(gdb) bt # 显示简略堆栈
(gdb) bt full # 显示完整堆栈(含局部变量)
(gdb) bt 10 # 显示最近10层堆栈
(gdb) frame <N> # 切换到第N层堆栈
(gdb) up # 上一层堆栈
(gdb) down # 下一层堆栈
3、 查看具体变量和内存
(gdb) info locals # 查看当前帧所有局部变量
(gdb) print variable_name # 打印变量值
(gdb) print/x variable_name # 十六进制显示
(gdb) print *pointer@10 # 打印指针指向的前10个元素
(gdb) x/20wx memory_address # 以4字节十六进制查看内存
(gdb) x/10i $pc # 查看当前汇编指令
4、寄存器查看
(gdb) info registers # 查看所有寄存器
(gdb) info registers eax ebx ecx # 查看指定寄存器
(gdb) print $rax # 打印RAX寄存器值
(gdb) x/i $pc # 查看当前指令
5、 多线程调试
(gdb) info threads # 查看所有线程
(gdb) thread <id> # 切换到指定线程
(gdb) thread apply all bt # 所有线程打印堆栈