diff options
Diffstat (limited to '')
-rw-r--r-- | man/coredumpctl.xml | 438 |
1 files changed, 438 insertions, 0 deletions
diff --git a/man/coredumpctl.xml b/man/coredumpctl.xml new file mode 100644 index 0000000..8002549 --- /dev/null +++ b/man/coredumpctl.xml @@ -0,0 +1,438 @@ +<?xml version='1.0'?> <!--*-nxml-*--> +<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" + "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> +<!-- SPDX-License-Identifier: LGPL-2.1-or-later --> + +<refentry id="coredumpctl" conditional='ENABLE_COREDUMP' + xmlns:xi="http://www.w3.org/2001/XInclude"> + + <refentryinfo> + <title>coredumpctl</title> + <productname>systemd</productname> + </refentryinfo> + + <refmeta> + <refentrytitle>coredumpctl</refentrytitle> + <manvolnum>1</manvolnum> + </refmeta> + + <refnamediv> + <refname>coredumpctl</refname> + <refpurpose>Retrieve and process saved core dumps and metadata</refpurpose> + </refnamediv> + + <refsynopsisdiv> + <cmdsynopsis> + <command>coredumpctl</command> + <arg choice="opt" rep="repeat">OPTIONS</arg> + <arg choice="req">COMMAND</arg> + <arg choice="opt" rep="repeat">PID|COMM|EXE|MATCH</arg> + </cmdsynopsis> + </refsynopsisdiv> + + <refsect1> + <title>Description</title> + + <para><command>coredumpctl</command> is a tool that can be used to retrieve and process core + dumps and metadata which were saved by + <citerefentry><refentrytitle>systemd-coredump</refentrytitle><manvolnum>8</manvolnum></citerefentry>. + </para> + </refsect1> + + <refsect1> + <title>Commands</title> + + <para>The following commands are understood:</para> + + <variablelist> + <varlistentry> + <term><command>list</command></term> + + <listitem><para>List core dumps captured in the journal + matching specified characteristics. If no command is + specified, this is the implied default.</para> + + <para>The output is designed to be human readable and contains a table with the following + columns:</para> + <variablelist> + <varlistentry> + <term>TIME</term> + <listitem><para>The timestamp of the crash, as reported by the kernel.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>PID</term> + <listitem><para>The identifier of the process that crashed.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>UID</term> + <term>GID</term> + <listitem><para>The user and group identifiers of the process that crashed.</para> + </listitem> + </varlistentry> + + <varlistentry> + <term>SIGNAL</term> + <listitem><para>The signal that caused the process to crash, when applicable. + </para></listitem> + </varlistentry> + + <varlistentry> + <term>COREFILE</term> + <listitem><para>Information whether the coredump was stored, and whether + it is still accessible: <literal>none</literal> means the core was + not stored, <literal>-</literal> means that it was not available (for + example because the process was not terminated by a signal), + <literal>present</literal> means that the core file is accessible by the + current user, <literal>journal</literal> means that the core was stored + in the <literal>journal</literal>, <literal>truncated</literal> is the + same as one of the previous two, but the core was too large and was not + stored in its entirety, <literal>error</literal> means that the core file + cannot be accessed, most likely because of insufficient permissions, and + <literal>missing</literal> means that the core was stored in a file, but + this file has since been removed.</para></listitem> + </varlistentry> + + <varlistentry> + <term>EXE</term> + <listitem><para>The full path to the executable. For backtraces of scripts + this is the name of the interpreter.</para></listitem> + </varlistentry> + </variablelist> + + <para>It's worth noting that different restrictions apply to + data saved in the journal and core dump files saved in + <filename>/var/lib/systemd/coredump</filename>, see overview in + <citerefentry><refentrytitle>systemd-coredump</refentrytitle><manvolnum>8</manvolnum></citerefentry>. + Thus it may very well happen that a particular core dump is still listed + in the journal while its corresponding core dump file has already been + removed.</para></listitem> + </varlistentry> + + <varlistentry> + <term><command>info</command></term> + + <listitem><para>Show detailed information about the last core dump + or core dumps matching specified characteristics + captured in the journal.</para></listitem> + </varlistentry> + + <varlistentry> + <term><command>dump</command></term> + + <listitem><para>Extract the last core dump matching specified + characteristics. The core dump will be written on standard + output, unless an output file is specified with + <option>--output=</option>. </para></listitem> + </varlistentry> + + <varlistentry> + <term><command>debug</command></term> + + <listitem><para>Invoke a debugger on the last core dump + matching specified characteristics. By default, + <citerefentry project='man-pages'><refentrytitle>gdb</refentrytitle><manvolnum>1</manvolnum></citerefentry> + will be used. This may be changed using the <option>--debugger=</option> + option or the <varname>$SYSTEMD_DEBUGGER</varname> environment + variable. Use the <option>--debugger-arguments=</option> option to pass extra + command line arguments to the debugger.</para></listitem> + </varlistentry> + + </variablelist> + + </refsect1> + + <refsect1> + <title>Options</title> + + <para>The following options are understood:</para> + + <variablelist> + + <xi:include href="standard-options.xml" xpointer="help" /> + <xi:include href="standard-options.xml" xpointer="version" /> + <xi:include href="standard-options.xml" xpointer="no-pager" /> + <xi:include href="standard-options.xml" xpointer="no-legend" /> + <xi:include href="standard-options.xml" xpointer="json" /> + + <varlistentry> + <term><option>-1</option></term> + + <listitem><para>Show information of the most recent core dump only, instead of listing all known core + dumps. Equivalent to <option>--reverse -n 1</option>.</para></listitem> + </varlistentry> + + <varlistentry> + <term><option>-n</option> <replaceable>INT</replaceable></term> + + <listitem><para>Show at most the specified number of entries. The specified parameter must be an + integer greater or equal to 1.</para></listitem> + </varlistentry> + + <varlistentry> + <term><option>-S</option></term> + <term><option>--since</option></term> + + <listitem><para>Only print entries which are since the specified date.</para></listitem> + </varlistentry> + + <varlistentry> + <term><option>-U</option></term> + <term><option>--until</option></term> + + <listitem><para>Only print entries which are until the specified date.</para></listitem> + </varlistentry> + + <varlistentry> + <term><option>-r</option></term> + <term><option>--reverse</option></term> + + <listitem><para>Reverse output so that the newest entries are displayed first. + </para></listitem> + </varlistentry> + + <varlistentry> + <term><option>-F</option> <replaceable>FIELD</replaceable></term> + <term><option>--field=</option><replaceable>FIELD</replaceable></term> + + <listitem><para>Print all possible data values the specified + field takes in matching core dump entries of the + journal.</para></listitem> + </varlistentry> + + <varlistentry> + <term><option>-o</option> <replaceable>FILE</replaceable></term> + <term><option>--output=</option><replaceable>FILE</replaceable></term> + + <listitem><para>Write the core to <option>FILE</option>. + </para></listitem> + </varlistentry> + + <varlistentry> + <term><option>--debugger=</option><replaceable>DEBUGGER</replaceable></term> + + <listitem><para>Use the given debugger for the <command>debug</command> + command. If not given and <varname>$SYSTEMD_DEBUGGER</varname> is unset, then + <citerefentry project='man-pages'><refentrytitle>gdb</refentrytitle><manvolnum>1</manvolnum></citerefentry> + will be used. </para></listitem> + </varlistentry> + + <varlistentry> + <term><option>-A</option> <replaceable>ARGS</replaceable></term> + <term><option>--debugger-arguments=</option><replaceable>ARGS</replaceable></term> + + <listitem><para>Pass the given <replaceable>ARGS</replaceable> as extra command line arguments + to the debugger. Quote as appropriate when <replaceable>ARGS</replaceable> contain whitespace. + (See Examples.)</para></listitem> + </varlistentry> + + <varlistentry> + <term><option>--file=<replaceable>GLOB</replaceable></option></term> + + <listitem><para>Takes a file glob as an argument. If + specified, coredumpctl will operate on the specified journal + files matching <replaceable>GLOB</replaceable> instead of the + default runtime and system journal paths. May be specified + multiple times, in which case files will be suitably + interleaved.</para></listitem> + </varlistentry> + + <varlistentry> + <term><option>-D</option> <replaceable>DIR</replaceable></term> + <term><option>--directory=</option><replaceable>DIR</replaceable></term> + + <listitem><para>Use the journal files in the specified <option>DIR</option>. + </para></listitem> + </varlistentry> + + <varlistentry> + <term><option>--root=<replaceable>ROOT</replaceable></option></term> + + <listitem><para>Use root directory <option>ROOT</option> when searching for coredumps. + </para></listitem> + </varlistentry> + + <varlistentry> + <term><option>--image=<replaceable>image</replaceable></option></term> + + <listitem><para>Takes a path to a disk image file or block device node. If specified, all operations + are applied to file system in the indicated disk image. This option is similar to + <option>--root=</option>, but operates on file systems stored in disk images or block devices. The + disk image should either contain just a file system or a set of file systems within a GPT partition + table, following the <ulink url="https://systemd.io/DISCOVERABLE_PARTITIONS">Discoverable Partitions + Specification</ulink>. For further information on supported disk images, see + <citerefentry><refentrytitle>systemd-nspawn</refentrytitle><manvolnum>1</manvolnum></citerefentry>'s + switch of the same name.</para></listitem> + </varlistentry> + + <varlistentry> + <term><option>-q</option></term> + <term><option>--quiet</option></term> + + <listitem><para>Suppresses informational messages about lack + of access to journal files and possible in-flight coredumps. + </para></listitem> + </varlistentry> + + <varlistentry> + <term><option>--all</option></term> + + <listitem><para>Look at all available journal files in <filename>/var/log/journal/</filename> + (excluding journal namespaces) instead of only local ones.</para></listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> + <title>Matching</title> + + <para>A match can be:</para> + + <variablelist> + <varlistentry> + <term><replaceable>PID</replaceable></term> + + <listitem><para>Process ID of the + process that dumped + core. An integer.</para></listitem> + </varlistentry> + + <varlistentry> + <term><replaceable>COMM</replaceable></term> + + <listitem><para>Name of the executable (matches + <option>COREDUMP_COMM=</option>). Must not contain slashes. + </para></listitem> + </varlistentry> + + <varlistentry> + <term><replaceable>EXE</replaceable></term> + + <listitem><para>Path to the executable (matches + <option>COREDUMP_EXE=</option>). Must contain at least one + slash. </para></listitem> + </varlistentry> + + <varlistentry> + <term><replaceable>MATCH</replaceable></term> + + <listitem><para>General journalctl match filter, must contain an equals + sign (<literal>=</literal>). See + <citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>. + </para></listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> + <title>Exit status</title> + <para>On success, 0 is returned; otherwise, a non-zero failure + code is returned. Not finding any matching core dumps is treated as + failure. + </para> + </refsect1> + + <refsect1> + <title>Environment</title> + + <variablelist class='environment-variables'> + <varlistentry> + <term><varname>$SYSTEMD_DEBUGGER</varname></term> + <listitem><para>Use the given debugger for the <command>debug</command> + command. See the <option>--debugger=</option> option.</para></listitem> + </varlistentry> + </variablelist> + </refsect1> + + <refsect1> + <title>Examples</title> + + <example> + <title>List all the core dumps of a program</title> + + <programlisting>$ coredumpctl list /usr/lib64/firefox/firefox +TIME PID UID GID SIG COREFILE EXE SIZE +Tue … 8018 1000 1000 SIGSEGV missing /usr/lib64/firefox/firefox - +Wed … 251609 1000 1000 SIGTRAP missing /usr/lib64/firefox/firefox - +Fri … 552351 1000 1000 SIGSEGV present /usr/lib64/firefox/firefox 28.7M +</programlisting> + + <para>The journal has three entries pertaining to <filename>/usr/lib64/firefox/firefox</filename>, and + only the last entry still has an available core file (in external storage on disk).</para> + + <para>Note that <filename>coredumpctl</filename> needs access to the journal files to retrieve the + relevant entries from the journal. Thus, an unprivileged user will normally only see information about + crashing programs of this user.</para> + </example> + + <example> + <title>Invoke <command>gdb</command> on the last core dump</title> + + <programlisting>$ coredumpctl debug</programlisting> + </example> + + <example> + <title>Use <command>gdb</command> to display full register info from the last core dump</title> + + <programlisting>$ coredumpctl debug --debugger-arguments="-batch -ex 'info all-registers'"</programlisting> + </example> + + <example> + <title>Show information about a core dump matched by PID</title> + + <programlisting>$ coredumpctl info 6654 + PID: 6654 (bash) + UID: 1000 (user) + GID: 1000 (user) + Signal: 11 (SEGV) + Timestamp: Mon 2021-01-01 00:00:01 CET (20s ago) + Command Line: bash -c $'kill -SEGV $$' + Executable: /usr/bin/bash + Control Group: /user.slice/user-1000.slice/… + Unit: user@1000.service + User Unit: vte-spawn-….scope + Slice: user-1000.slice + Owner UID: 1000 (user) + Boot ID: … + Machine ID: … + Hostname: … + Storage: /var/lib/systemd/coredump/core.bash.1000.….zst (present) + Size on Disk: 51.7K + Message: Process 130414 (bash) of user 1000 dumped core. + + Stack trace of thread 130414: + #0 0x00007f398142358b kill (libc.so.6 + 0x3d58b) + #1 0x0000558c2c7fda09 kill_builtin (bash + 0xb1a09) + #2 0x0000558c2c79dc59 execute_builtin.lto_priv.0 (bash + 0x51c59) + #3 0x0000558c2c79709c execute_simple_command (bash + 0x4b09c) + #4 0x0000558c2c798408 execute_command_internal (bash + 0x4c408) + #5 0x0000558c2c7f6bdc parse_and_execute (bash + 0xaabdc) + #6 0x0000558c2c85415c run_one_command.isra.0 (bash + 0x10815c) + #7 0x0000558c2c77d040 main (bash + 0x31040) + #8 0x00007f398140db75 __libc_start_main (libc.so.6 + 0x27b75) + #9 0x0000558c2c77dd1e _start (bash + 0x31d1e) +</programlisting> + </example> + + <example> + <title>Extract the last core dump of /usr/bin/bar to a file named + <filename index="false">bar.coredump</filename></title> + + <programlisting>$ coredumpctl -o bar.coredump dump /usr/bin/bar</programlisting> + </example> + </refsect1> + + <refsect1> + <title>See Also</title> + <para> + <citerefentry><refentrytitle>systemd-coredump</refentrytitle><manvolnum>8</manvolnum></citerefentry>, + <citerefentry><refentrytitle>coredump.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>, + <citerefentry><refentrytitle>systemd-journald.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>, + <citerefentry project='man-pages'><refentrytitle>gdb</refentrytitle><manvolnum>1</manvolnum></citerefentry> + </para> + </refsect1> + +</refentry> |