1. 打开内核 coredump 功能
sudo systemctl stop apport.service sudo systemctl disable apport.service sudo echo 'kernel.core_pattern=/var/crash/%e.%t.%s' >> /etc/sysctl.conf # /etc/sysctl.conf 可能要改变权限才能读写 sudo echo '* soft core unlimited' >> /etc/security/limits.conf sudo reboot
2. sudo 运行自己的程序
注意:如果是使用 service 服务来启动程序,当程序崩溃时是不能将 coredump 文件保存到本地文件的,应该是跟输出定向有关。
3. 使用 gdb 调试 coredump 文件
gdb ./linuxProg linuxProg.1630575379.11
gdb 的调试命令可以查一下,主要有:
(gdb) bt # 查看堆栈 (gdb) frame 0 # 查看第0帧 (gdb) info threads # 查看当前帧所有线程 (gdb) p myParam # 查看变量值 (gdb) thread 1 # 切换线程 1 (gdb) info r # 查看寄存器