Difference between revisions of "Core dump"

[quality revision] [quality revision]
m
 
 


Template:ArticleMainWriter Template:ArticleApprovedVersion


1 Article purpose[edit]

This article provides the initial information set needed to start the core dump Linux® service.

2 Introduction[edit]

The following table provides a brief description of the tool, as well as its availability depending on the software packages:

Yes: this tool is either present (ready to use or to be activated), or can be integrated and activated on the software package.

No: this tool is not present and cannot be integrated, or it is present but cannot be activated on the software package.

Tool STM32MPU Embedded Software distribution STM32MPU Embedded Software distribution for Android™
Name Category Purpose Starter Package Developer Package Distribution Package Starter Package Developer Package Distribution Package
systemd core dump Debugging tools systemd core dump: generates core dump files on Linux
Yes No Yes No No No

core dump records the states of the working program memory before an abnormal termination. The dump record assists in diagnosing and debugging program errors.

Systemd provides, via a configuration file, a way to generate and store core dump for Linux system.

3 Installing the trace and debug tool on your target board[edit]

3.1 Using STM32MPU Embedded Software Distribution[edit]

3.1.1 Distribution Package[edit]

ST via OpenSTLinux layer provides a recipe named systemd-conf, which provides a core dump configuration for systemd.

The core dump configuration is available only via OpenSTLinux distribution. If this configuration is activated via another distribution, an add-on must be made in the systemd-conf recipe.

recipes-core/systemd/systemd-conf.bbappend:

do_install_append() {
    install -d ${D}${sysconfdir}/systemd/coredump.conf.d/
    echo "[Coredump]" > ${D}${sysconfdir}/systemd/coredump.conf.d/coredump-custom.conf
    echo "Storage=external" >> ${D}${sysconfdir}/systemd/coredump.conf.d/coredump-custom.conf
}

4 Getting started[edit]

4.1 Verify setup[edit]

  • Verify configuration are present
Board $> ls /etc/systemd/coredump.conf.d/
coredump-custom.conf
  • Verify if core dump is registered by Linux
Board $> cat /proc/sys/kernel/core_pattern
|/lib/systemd/systemd-coredump %P %u %g %s %t %c %h %e

4.2 Crash append[edit]

If an application/program has crashed and generated a core dump while running, the core dump result is stored in /var/lib/systemd/coredump.

(See the How to test core dump service below ).

5 How to test core dump[edit]

  • Launch a program

Launch a program (for example: "weston-flower")

Board $> weston-flower &
  • Get the pid of this program with the ps command
Board $> ps ax | grep <program>
  • kill the program with specific ILL (4) signal (ILL: Illegal instruction)
Board $> kill -4 <pid of program>

Force to generate core dump (for example)

Board $> kill -4 `pidof weston-flower`
  • check /var/lib/systemd/coredump/, the core dump associated to this abnormal termination:
Board $> find /var/lib/systemd/coredump/

/var/lib/systemd/coredump/ /var/lib/systemd/coredump/core.weston-flower.0.47f9def8d0f44af5919d0e4cd5ee04ae.554.1543488316000000.xz


The core dump generated has a size of around 300 Kbytes

Board $> du -sh /var/lib/systemd/coredump/*
295K /var/lib/systemd/coredump/core.weston-flower.0.47f9def8d0f44af5919d0e4cd5ee04ae.554.1543488316000000.xz

6 To go further[edit]

To make core analysis please refer to GDB#Core_dump_analysis_using_GDB

7 Documentation and web articles[edit]


"External links"
Document link Document Type Description
systemd man page for core dump configuration Standard systemd man page
<noinclude>

{{ArticleBasedOnModel | [[Trace and debug tools article model]]}}
{{ArticleMainWriter | ChristopheP}}
{{ArticleApprovedVersion | ChristopheP | NathalieS (Not Done), BernardP (Not Done), ChristopheM (Not Done), SebastienG (Not Done), Jean-ChristopheT (Passed with 1 minor remark, 11Jan'19)| No previous approved version | PhilipS - 16Jan'19 - 10302 | 16Jan'19}}

[[Category:Linux debugging tools]]</noinclude>

==Article purpose==
This article provides the initial information set needed to start the '''core dump''' Linux<sup>&reg;</sup> service.

== Introduction ==
{{:Trace_and_debug_tools_assignment_table_template}}<onlyinclude>

| [[Core dump|systemd core dump]]
| [[:Category:Debugging tools|Debugging tools]]
| style="text-align:left;" | '''systemd core dump''': generates core dump files on Linux<br>

| {{Y}} || {{N}} || {{Y}} || {{N}} || {{N}} || {{N}}
|-</onlyinclude>

|}

'''core dump''' records the states of the working program memory before an abnormal termination. The dump record assists in diagnosing and debugging program errors.

'''Systemd''' provides, via a configuration file, a way to generate and store core dump for Linux system.

== Installing the trace and debug tool on your target board==
=== Using STM32MPU Embedded Software Distribution ===
==== Distribution Package ====
ST via OpenSTLinux layer provides a recipe named '''systemd-conf''', which provides a core dump configuration for systemd.

The '''core dump''' configuration is available only via OpenSTLinux distribution. If this configuration is activated via another distribution, an add-on must be made in the systemd-conf recipe. 

recipes-core/systemd/systemd-conf.bbappend:<pre>

do_install_append() {
    install -d ${D}${sysconfdir}/systemd/coredump.conf.d/
    echo "[Coredump]" > ${D}${sysconfdir}/systemd/coredump.conf.d/coredump-custom.conf
    echo "Storage=external" >> ${D}${sysconfdir}/systemd/coredump.conf.d/coredump-custom.conf
}</pre>


== Getting started ==
=== Verify setup ===

* Verify configuration are present
 {{Board$}} ls /etc/systemd/coredump.conf.d/
 coredump-custom.conf

* Verify if '''core dump''' is registered by Linux
 {{Board$}} cat /proc/sys/kernel/core_pattern
 |/lib/systemd/systemd-coredump %P %u %g %s %t %c %h %e

=== Crash append===
If an application/program has crashed and generated a core dump while running, the core dump result is stored in '''''/var/lib/systemd/coredump'''''.

(See the [[Core_dump#How to test core dump|How to test core dump]] service below ).

==How to test core dump==
* Launch a program
Launch a program (for example: "weston-flower")
 {{Board$}} weston-flower &

* Get the pid of this program with the ps command
 {{Board$}} ps ax | grep <program>


* kill the program with specific '''ILL''' (4) signal (ILL: Illegal instruction)
 {{Board$}} kill -4 <pid of program>

Force to generate core dump (for example)
 {{Board$}} kill -4 `pidof weston-flower`

* check ''/var/lib/systemd/coredump/'', the core dump associated to this abnormal termination:
 {{Board$}} find /var/lib/systemd/coredump/
/var/lib/systemd/coredump/
/var/lib/systemd/coredump/core.weston-flower.0.47f9def8d0f44af5919d0e4cd5ee04ae.554.1543488316000000.xz

The core dump generated has a size of around 300 Kbytes
 {{Board$}} du -sh /var/lib/systemd/coredump/*
 295K /var/lib/systemd/coredump/core.weston-flower.0.47f9def8d0f44af5919d0e4cd5ee04ae.554.1543488316000000.xz

== To go further ==
To make core analysis please refer to [[GDB#Core_dump_analysis_using_GDB]]

==Documentation and web articles==<references />


{|
|+ "External links"
|-
! scope=col | Document link
! scope=col | Document Type
! scope=col | Description
|-
| [https://www.freedesktop.org/software/systemd/man/coredump.conf.html systemd man page for core dump configuration]
| Standard
| systemd man page
|}


{{ ArticleBasedOnModel | Trace and debug tools article model}}
{{ PublicationRequestId | 10302 | 16Jan'19 }}

[[Category:Linux debugging tools]]
Line 1: Line 1:
<noinclude>
 
{{ArticleBasedOnModel | [[Trace and debug tools article model]]}}
 
{{ArticleMainWriter | ChristopheP}}
 
{{ArticleApprovedVersion | ChristopheP | NathalieS (Not Done), BernardP (Not Done), ChristopheM (Not Done), SebastienG (Not Done), Jean-ChristopheT (Passed with 1 minor remark, 11Jan'19)| No previous approved version | PhilipS - 16Jan'19 - 10302 | 16Jan'19}}
 
 
[[Category:Linux debugging tools]]
 
</noinclude>
 
 
 
==Article purpose==
 
==Article purpose==
 
This article provides the initial information set needed to start the '''core dump''' Linux<sup>&reg;</sup> service.
 
This article provides the initial information set needed to start the '''core dump''' Linux<sup>&reg;</sup> service.
Line 97: Line 89:
 
| systemd man page
 
| systemd man page
 
|}
 
|}
  +
  +
{{ ArticleBasedOnModel | Trace and debug tools article model}}
  +
{{ PublicationRequestId | 10302 | 16Jan'19 }}
  +
  +
[[Category:Linux debugging tools]]