在服务器上执行某些命令时会出现崩溃,并打印核心已转储字样。如果需要分析具体log,可以按照如下步骤:
- 设置core file 生成,命令:ulimit -c unlimited
- 设置core file生成路径,命令:echo "/var/log/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
- 执行出错的命令生成core file,命令: <my_bin>
- 查看core file,如:/var/log/core-<my_bin>-xxxxx-xxxxxxxxx
- 使用gdb调试:gdb -c /var/log/core-<my_bin>-xxxxx-xxxxxxxxx <my_bin>
几个常用的GDB命令:
l(list) ,显示源代码,并且可以看到对应的行号;
b(break)x, x是行号,表示在对应的行号位置设置断点;
p(print)x, x是变量名,表示打印变量x的值
r(run), 表示继续执行到断点的位置
n(next),表示执行下一步
c(continue),表示继续执行
q(quit),表示退出gdb