程序如果已经宕掉该如何调试

方法一 : Core

称为Coer Dump文件

当程序宕掉的时候,可以生成当时程序对应内存的镜像,从而分析当时程序的出错在哪边。
例如:调试服务端程序,让程序跑,直到宕掉

如何生成 :

ulimit -c n 单位kB
n表示CoreDump最大有多大,再大就不会生成了
ulimit -c unlimited
不显示CoreDump文件的大小

注: 如果服务端程序是自动重启的,就会造成某一次出错存的CoreDump文件超大,占用大量系统资源,所以一般都会限制CoreDump文件的大小。
gdb main core
当CoreDump文件生成后直接通过gdb main core,查看dump文件
CoreDump文件的保存路径查看:

lee@lee-PC:~/code/src/coredump$ cat /proc/sys/kernel/core_pattern 
|/lib/systemd/systemd-coredump %P %u %g %s %t 9223372036854775808 %h %e
  1. 首先设置下CoreDump文件大小,系统一般默认为0,这里就是为了示例,设置为无限制。
lee@lee-PC:~/code/src/gdb$ ulimit -c
0
lee@lee-PC:~/code/src/gdb$ ulimit -c unlimited
lee@lee-PC:~/code/src/gdb$ ulimit -c
unlimited
lee@lee-PC:~/code/src/gdb$ 
  1. gdb main core
    通过gdb调试程序,并指定对应的CoreDump文件,这里的core文件实在当前目录下;
    bt 可以打印堆栈信息,定位错误所在;
    在这里插入图片描述

方法二:通过coredumpctl

  1. 安装
    sudo apt search coredumpctl sudo apt install systemd-coredump
  2. coredumpctl命令查看coredump信息:
lee@lee-PC:~/code/src/coredump$ coredumpctl
Hint: You are currently not seeing messages from other users and the system.
      Users in groups 'adm', 'systemd-journal' can see all messages.
      Pass -q to turn off this notice.
TIME                            PID   UID   GID SIG COREFILE  EXE
Tue 2020-12-29 10:01:45 CST    8550  1000  1000  11 present   /usr/bin/DeepinAIAssistant
Wed 2020-12-30 14:55:24 CST    5233  1000  1000  11 present   /usr/bin/DeepinAIAssistant
Wed 2020-12-30 17:23:45 CST   10464  1000  1000  11 present   /usr/bin/dde-file-manager
Wed 2020-12-30 18:57:28 CST    4723  1000  1000  11 present   /usr/bin/DeepinAIAssistant
Fri 2021-01-01 01:03:01 CST   11866  1000  1000  11 present   /opt/apps/cn.wps.wps-office/files/kingsoft/wps-o
Fri 2021-01-01 12:32:44 CST    1073  1000  1000  11 present   /home/lee/code/src/gdb/main
Fri 2021-01-01 13:23:52 CST   17885  1000  1000  11 present   /home/lee/code/src/coredump/main
Fri 2021-01-01 13:24:08 CST   18137  1000  1000  11 present   /home/lee/code/src/coredump/main
Fri 2021-01-01 13:34:21 CST   27893  1000  1000  11 present   /home/lee/code/src/coredump/main

lee@lee-PC:~/code/src/coredump$ 
  1. coredumpctl gdb 'pidnum'
    通过指定pid号,通过gdb查看相关信息
    bt 可以打印堆栈信息

方法三:gdb里面指定CoreDump文件

Linux环境崩溃生成core文件以及调试

注: 以上三种方法需要使用调试模式,否则无法知道Dump文件与代码的对应关系

参考链接:
https://jingyan.baidu.com/article/574c5219521b456c8d9dc1cc.html
https://www.cnblogs.com/zhuochong/p/10038073.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值