searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

coredumpctl使用

2024-11-12 09:25:07
6
0

在软件的开发调试过程中,经常会出现因为数组越界踩内存等发生程序崩溃的场景,这时候就可以通过coredumpctl工具,来查看程序崩溃时内存内容的快照 core dump文件,进行快速调试和分析崩溃的原因。coredumpctl能够列出系统中所有的core dump文件,提供关于这些文件的详细信息,并支持将core dump文件导出到标准输出或文件中,以便进行进一步的调试和分析。以下是一些coredumpctl使用的基本步骤:

1、 安装coredumpctl

coredumpctl  systemd 的一部分,通常与 systemd-coredump 一起安装。在大多数现代Linux发行版中,这些工具默认已经安装。如果未安装,通常安装 systemd 或相关的 systemd-coredump 包即可。

可以通过命令ulimit -c查看当前系统允许生成core dump文件的大小,并通过ulimit -c unlimited设置对core dump文件的大小不设限制(可能会占用大量磁盘空间,因此在使用时需要谨慎)。生成的core dump文件通常位于/var/lib/systemd/coredump/目录中,这些文件是压缩过的格式,默认配置既考虑了core dump文件的大小,又允许通过coredumpctl命令进行查看和调试。

2、 coredumpctl常用参数

·          -h--help:显示帮助信息。

·          --version:显示coredumpctl的版本信息。

·          --no-legend:不显示表头信息。

·          --debugger=DEBUGGER:启动指定的调试器,如未指定则默认启动gdb

·          -1:只显示一条数据。

·          -S--since=date:只显示指定时间之后的数据。

·          -U--until=date:只显示指定时间之前的数据。

·          -r--reverse:按照逆序显示数据。

·          -o--output=file:将显示信息输出到指定的文件中。

·          -D--directory=dir:指定显示的journal文件的目录。

3、 coredumpctl list

coredumpctl list 可以查看当前系统中所有可用的 core dump 文件,该命令显示一个包含所有core dump文件的列表,包括进程IDPID)、用户IDUID)、组IDGID)、信号、时间戳、可执行文件名以及路径等信息。如果系统配置了相关的保留策略(例如,只保留一定数量或一段时间内的core dump文件),则列表中可能不包含所有历史文件。还可以使用各种选项来过滤 coredumpctl list 的输出。例如,使用 --since  --until 选项来限制时间范围,使用 -o 选项来指定输出格式,或使用 -r 选项来逆序显示结果。

coredumpctl list --since "2024-11-04 18:12" --until "2024-11-04 18:13"

4、 coredumpctl info

要查看特定 core dump 文件的详细信息,如程序崩溃时的信号、内存使用情况、寄存器状态等,可以使用coredumpctl info命令,还可以指定core dump文件的PID或路径:

coredumpctl info <PID>  或者

coredumpctl info /path/to/coredump/file

5、 coredumpctl dump

coredumpctl dump命令可以将core dump文件的内容导出到另外一个文件中,或者直接指定core dump文件路径:

coredumpctl dump <PID>  > /path/to/output/file   或者

coredumpctl dump /path/to/coredump/file > /path/to/output/file

6、 coredump debug

coredumpctl 还可以直接启动调试器(如 GDB)来调试 core dump 文件,并指定要调试的 core dump 文件的 PID 或路径。对于导出的core dump文件在调试之前,确保有一个与core dump文件匹配的可执行文件。在使用coredumpctl debug命令时,如果实际可执行文件是release模式下生成的,可能得不到太多可用信息。为了获取更多上下文信息,可以在gdb中指定一个携带调试信息的可执行文件(使用-g编译),并确保该文件与release版本一致。

coredumpctl debug <PID>   或者

coredumpctl debug /path/to/coredump/file

 

综上所述,coredumpctl是一个强大的工具,可以轻松地管理和调试 core dump 文件,能够帮助开发人员快速定位和解决程序崩溃问题。通过合理利用其参数和子命令,可以大大提高调试效率。当程序调试或者问题定位完成之后,为了节省磁盘空间,建议最好手动删除这些core dump文件。

0条评论
0 / 1000
乡间一郎中
3文章数
0粉丝数
乡间一郎中
3 文章 | 0 粉丝
乡间一郎中
3文章数
0粉丝数
乡间一郎中
3 文章 | 0 粉丝
原创

coredumpctl使用

2024-11-12 09:25:07
6
0

在软件的开发调试过程中,经常会出现因为数组越界踩内存等发生程序崩溃的场景,这时候就可以通过coredumpctl工具,来查看程序崩溃时内存内容的快照 core dump文件,进行快速调试和分析崩溃的原因。coredumpctl能够列出系统中所有的core dump文件,提供关于这些文件的详细信息,并支持将core dump文件导出到标准输出或文件中,以便进行进一步的调试和分析。以下是一些coredumpctl使用的基本步骤:

1、 安装coredumpctl

coredumpctl  systemd 的一部分,通常与 systemd-coredump 一起安装。在大多数现代Linux发行版中,这些工具默认已经安装。如果未安装,通常安装 systemd 或相关的 systemd-coredump 包即可。

可以通过命令ulimit -c查看当前系统允许生成core dump文件的大小,并通过ulimit -c unlimited设置对core dump文件的大小不设限制(可能会占用大量磁盘空间,因此在使用时需要谨慎)。生成的core dump文件通常位于/var/lib/systemd/coredump/目录中,这些文件是压缩过的格式,默认配置既考虑了core dump文件的大小,又允许通过coredumpctl命令进行查看和调试。

2、 coredumpctl常用参数

·          -h--help:显示帮助信息。

·          --version:显示coredumpctl的版本信息。

·          --no-legend:不显示表头信息。

·          --debugger=DEBUGGER:启动指定的调试器,如未指定则默认启动gdb

·          -1:只显示一条数据。

·          -S--since=date:只显示指定时间之后的数据。

·          -U--until=date:只显示指定时间之前的数据。

·          -r--reverse:按照逆序显示数据。

·          -o--output=file:将显示信息输出到指定的文件中。

·          -D--directory=dir:指定显示的journal文件的目录。

3、 coredumpctl list

coredumpctl list 可以查看当前系统中所有可用的 core dump 文件,该命令显示一个包含所有core dump文件的列表,包括进程IDPID)、用户IDUID)、组IDGID)、信号、时间戳、可执行文件名以及路径等信息。如果系统配置了相关的保留策略(例如,只保留一定数量或一段时间内的core dump文件),则列表中可能不包含所有历史文件。还可以使用各种选项来过滤 coredumpctl list 的输出。例如,使用 --since  --until 选项来限制时间范围,使用 -o 选项来指定输出格式,或使用 -r 选项来逆序显示结果。

coredumpctl list --since "2024-11-04 18:12" --until "2024-11-04 18:13"

4、 coredumpctl info

要查看特定 core dump 文件的详细信息,如程序崩溃时的信号、内存使用情况、寄存器状态等,可以使用coredumpctl info命令,还可以指定core dump文件的PID或路径:

coredumpctl info <PID>  或者

coredumpctl info /path/to/coredump/file

5、 coredumpctl dump

coredumpctl dump命令可以将core dump文件的内容导出到另外一个文件中,或者直接指定core dump文件路径:

coredumpctl dump <PID>  > /path/to/output/file   或者

coredumpctl dump /path/to/coredump/file > /path/to/output/file

6、 coredump debug

coredumpctl 还可以直接启动调试器(如 GDB)来调试 core dump 文件,并指定要调试的 core dump 文件的 PID 或路径。对于导出的core dump文件在调试之前,确保有一个与core dump文件匹配的可执行文件。在使用coredumpctl debug命令时,如果实际可执行文件是release模式下生成的,可能得不到太多可用信息。为了获取更多上下文信息,可以在gdb中指定一个携带调试信息的可执行文件(使用-g编译),并确保该文件与release版本一致。

coredumpctl debug <PID>   或者

coredumpctl debug /path/to/coredump/file

 

综上所述,coredumpctl是一个强大的工具,可以轻松地管理和调试 core dump 文件,能够帮助开发人员快速定位和解决程序崩溃问题。通过合理利用其参数和子命令,可以大大提高调试效率。当程序调试或者问题定位完成之后,为了节省磁盘空间,建议最好手动删除这些core dump文件。

文章来自个人专栏
工作随笔记
3 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0