一 概述
本文章是介绍在linux下开发的程序崩溃如何去解决,类似于windows下程序崩溃时会生成dump文件,linux下程序崩溃时也会生成一个崩溃文件,该文件是core。如何生成core文件是本文章要着重介绍的。
二 操作步骤
1.在终端执行命令:设置core 文件大小无限制 ,当前shell生效
ulimit -c unlimited
2.在终端中执行脚本 proc-watch.sh
./proc-watch.sh ./app
3.程序崩溃后,在可执行程序当前目录会生成一个core文件
4.使用gdb命令进行调试,查询最后崩溃的调用栈
gdb ./app core
bt full
三 脚本
bash
#!/bin/bash
# 用法: ./proc-watch.sh ./yourapp arg1 arg2
APP="$1"
shift
# 开启core文件大小限制(当前shell生效)
ulimit -c unlimited
# 设置内核core生成规则,sysctl
sudo sysctl -w kernel.core_pattern="core.%e.%p.%t" >/dev/null
echo "=== Watch start, run: $APP $@"
echo "=== Crash will generate core.* in current dir"
# 启动目标程序
"$APP" "$@"
CODE=$?
if [ $CODE -ge 128 ]; then
SIG=$((CODE - 128))
echo "==== Process crashed by signal $SIG ===="
else
echo "Process exit normally, code:$CODE"
fi
exit $CODE