Debian/Ubuntu systemd coredump調試程序Crash

程序是通過systemd監管,當程序出現crash的時候,需要保存crash的日志,也就是coredump日志,按照一般做法設置coredump。而在安裝有systemd服務的系統中一般都有systemd-coredump服務。
systemd-coredump 是 systemd 子系統中的一個工具,用于 收集、處理和存儲 Linux 系統中的 core dump 文件。它是現代 Linux 系統中處理進程崩潰信息的推薦方式,替代了傳統的直接生成 core 文件。

systemd-coredump的主要功能

功能說明
📦 捕獲崩潰進程的核心轉儲接管核心轉儲處理,替代傳統 core 文件
🧾 保存或丟棄 core 文件可配置是否保存到磁盤、壓縮、限制大小
🗂 統一存儲所有 core 文件保存到 /var/lib/systemd/coredump/
🔍 提供調試接口coredumpctl 命令用于列出、查看、調試 core 文件
🧱 安全性默認以受限權限運行,不會泄露敏感信息

安裝systemd-coredump服務

檢查是否已安裝

$ which coredumpctl
/usr/bin/coredumpctl

這里會輸出coredumpctl所在的位置,而我最開始的時候,系統是沒有安裝coredumpctl。

安裝systemd-coredump服務

$ sudo apt-get install systemd-coredump
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:systemd-coredump
0 upgraded, 1 newly installed, 0 to remove and 261 not upgraded.
Need to get 93.0 kB of archives.
After this operation, 374 kB of additional disk space will be used.
Get:1 https://mirrors.aliyun.com/debian-security bookworm-security/main arm64 systemd-coredump arm64 252.38-1~deb12u1 [93.0 kB]
Fetched 93.0 kB in 1s (181 kB/s)
Selecting previously unselected package systemd-coredump.
(Reading database ... 156369 files and directories currently installed.)
Preparing to unpack .../systemd-coredump_252.38-1~deb12u1_arm64.deb ...
Unpacking systemd-coredump (252.38-1~deb12u1) ...
Setting up systemd-coredump (252.38-1~deb12u1) ...Configuration file '/etc/systemd/coredump.conf'==> File on system created by you or by a script.==> File also in package provided by package maintainer.What would you like to do about it ?  Your options are:Y or I  : install the package maintainer's versionN or O  : keep your currently-installed versionD     : show the differences between the versionsZ     : start a shell to examine the situationThe default action is to keep your current version.
*** coredump.conf (Y/I/N/O/D/Z) [default=N] ? Y
Installing new version of config file /etc/systemd/coredump.conf ...
Creating group 'systemd-coredump' with GID 991.
Creating user 'systemd-coredump' (systemd Core Dumper) with UID 991 and GID 991.
Processing triggers for man-db (2.11.2-2) ...

coredump.conf --> 這里輸入Y

配置coredump.conf

[Coredump]
Storage=external
Compress=yes
ProcessSizeMax=2G
ExternalSizeMax=2G
JournalSizeMax=767M
MaxUse=2G
#KeepFree=

檢查core_pattern

在安裝systemd-coredump服務時,已經做了對應的配置

cat /proc/sys/kernel/core_pattern
|/lib/systemd/systemd-coredump %P %u %g %s %t 9223372036854775808 %h %d

reload systemd

sudo systemctl daemon-reexec

測試

測試程序

// crash.cpp
int main() {int* p = nullptr;*p = 1;
}

編譯&觸發coredump

$ g++ crash.cpp -o crash
ulimit -c unlimited
./crash

檢查systemd-coredump的輸出

$ coredumpctl list
TIME                           PID  UID  GID SIG     COREFILE EXE                            SIZE
Wed 2025-06-11 01:49:07 BST 357407 1000 1000 SIGSEGV present  /home/pi/workspace/core/crash 35.5K

具體coredump信息

$ coredumpctl info crashPID: 357407 (crash)UID: 1000 (pi)GID: 1000 (pi)Signal: 11 (SEGV)Timestamp: Wed 2025-06-11 01:49:06 BST (2min 22s ago)Command Line: ./crashExecutable: /home/pi/workspace/core/crashControl Group: /user.slice/user-1000.slice/session-67.scopeUnit: session-67.scopeSlice: user-1000.sliceSession: 67Owner UID: 1000 (pi)Boot ID: 9f37ddcf177845c5b33baf5ede4df169Machine ID: 3193cd42b55048b38d93ded435763681Hostname: raspberrypi-CM5Storage: /var/lib/systemd/coredump/core.crash.1000.9f37ddcf177845c5b33baf5ede4df169.357407.1749602946000000.zst (present)Size on Disk: 35.5KMessage: Process 357407 (crash) of user 1000 dumped core.Stack trace of thread 357407:#0  0x000055562d490724 n/a (/home/pi/workspace/core/crash + 0x724)#1  0x00007fffb2fc7740 __libc_start_call_main (libc.so.6 + 0x27740)#2  0x000055562d490714 n/a (/home/pi/workspace/core/crash + 0x714)ELF object binary architecture: AARCH64

coredump debug

$ coredumpctl gdb crashPID: 357407 (crash)UID: 1000 (pi)GID: 1000 (pi)Signal: 11 (SEGV)Timestamp: Wed 2025-06-11 01:49:06 BST (2min 5s ago)Command Line: ./crashExecutable: /home/pi/workspace/core/crashControl Group: /user.slice/user-1000.slice/session-67.scopeUnit: session-67.scopeSlice: user-1000.sliceSession: 67Owner UID: 1000 (pi)Boot ID: 9f37ddcf177845c5b33baf5ede4df169Machine ID: 3193cd42b55048b38d93ded435763681Hostname: raspberrypi-CM5Storage: /var/lib/systemd/coredump/core.crash.1000.9f37ddcf177845c5b33baf5ede4df169.357407.1749602946000000.zst (present)Size on Disk: 35.5KMessage: Process 357407 (crash) of user 1000 dumped core.Stack trace of thread 357407:#0  0x000055562d490724 n/a (/home/pi/workspace/core/crash + 0x724)#1  0x00007fffb2fc7740 __libc_start_call_main (libc.so.6 + 0x27740)#2  0x000055562d490714 n/a (/home/pi/workspace/core/crash + 0x714)ELF object binary architecture: AARCH64GNU gdb (Debian 13.1-3) 13.1
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "aarch64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:<http://www.gnu.org/software/gdb/documentation/>.For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /home/pi/workspace/core/crash...
(No debugging symbols found in /home/pi/workspace/core/crash)
[New LWP 357407]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
Core was generated by `./crash'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x000055562d490724 in main ()
(gdb) bt
#0  0x000055562d490724 in main ()
(gdb) quit

自定義service配置

[Unit]
Description=application
After=custom.service
Requires=xxxx.service[Service]
LimitCORE=infinity
LimitSTACK=infinity
Type=simple
ExecStart=/custom/app/custom
Restart=on-failure
TimeoutStopSec=30s
WorkingDirectory=/custom[Install]
WantedBy=multi-user.target
設置項說明
LimitCORE=infinity允許 systemd 啟動的程序生成 core dump
WorkingDirectorycore 文件會默認保存到這里(如果未被 systemd-coredump 截獲)
Restart=on-failure保證崩潰時自動重啟進程(但不影響 core dump)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/909489.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/909489.shtml
英文地址,請注明出處:http://en.pswp.cn/news/909489.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【圖片轉 3D 模型】北大·字節跳動·CMU攜手——單圖15 秒生成結構化3D模型!

??引言&#xff1a;單圖生成結構化 3 D 模型的技術突破? ? PartCrafter 由北京大學、字節跳動與卡耐基梅隆大學聯合研發&#xff0c;是全球首個??端到端生成結構化 3 D 網格??的模型。它僅需單張 RGB 圖像&#xff0c;即可在 34 秒內生成帶語義分解的 3 D 部件&#xf…

零基礎RT-thread第二節:按鍵控制

我這里依然使用的是野火開發板&#xff0c;F767芯片。 這一節寫一下按鍵控制LED亮滅。 這是按鍵以及LED的原理圖。 按鍵對應的引腳不按下時是低電平&#xff0c;按下后是高電平。 LED是在低電平點亮。 接下來是key.c: /** Copyright (c) 2006-2021, RT-Thread Development T…

《Gulp與SCSS:解構前端樣式開發的底層邏輯與實戰智慧》

探尋Gulp與SCSS協作的底層邏輯 Gulp&#xff0c;作為任務自動化的佼佼者&#xff0c;其核心價值在于將一系列復雜的任務&#xff0c;如文件的編譯、合并、壓縮等&#xff0c;以一種流暢且高效的方式串聯起來&#xff0c;形成一個自動化的工作流。它基于流&#xff08;stream&a…

OpenCV CUDA模塊圖像變形------對圖像進行GPU加速的透視變換函數warpPerspective()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 該函數用于對圖像進行 GPU 加速的透視變換&#xff08;Perspective Transformation&#xff09;&#xff0c;是 cv::warpPerspective 的 CUDA 版…

吳恩達機器學習筆記(2)—單變量線性回歸

目錄 一、模型表示 二、代價函數 三、代價函數的直觀理解&#xff08;1&#xff09; 四、代價函數的直觀理解&#xff08;2&#xff09; 五、梯度下降 六、梯度下降的直觀理解 七、線性回歸的梯度下降 在本篇內容中&#xff0c;我們將介紹第一個機器學習算法——線性回歸…

最新華為 HCIP-Datacom(H12-821)

最新 HCIP-Datacom&#xff08;H12-821&#xff09;&#xff0c;完整題庫請上方訪問&#xff0c;更新完畢。 在OSPF網絡中&#xff0c;NSSA區域與STUB區域都是為了減少LSA數量&#xff0c;兩者最主要的區別在于&#xff0c;NSSA區域可以引入外部路由&#xff0c;并同時接收OSPF…

vba學習系列(11)--批退率通過率等數據分析

系列文章目錄 文章目錄 系列文章目錄前言一、外觀報表1.產能2.固定傷排查3.鏡片不良TOP4.鏡片公式計算5.鏡片良率計算6.鏡片批退率7.鏡筒不良TOP8.鏡筒公式計算9.鏡筒良率計算10.鏡筒批退率 二、反射率報表1.機臺通過率2.鏡片通過率圈數分析3.鏡片通過率罩次分析4.鏡筒通過率圈…

成功在 Conda Python 2.7 環境中安裝 Clipper(eCLIP peak caller)

&#x1f52c; 成功在 Conda Python 2.7 環境中安裝 Clipper&#xff08;eCLIP peak caller&#xff09; 本文記錄了如何在無 root 權限下使用 Conda 環境&#xff0c;解決依賴、構建擴展模塊并成功安裝運行 clipper 的詳細流程。適用于再現 eCLIP 分析流程時遇到 clipper 安裝…

通過 VS Code 連接 GitLab 并上傳項目

通過 VS Code 連接 GitLab 并上傳項目&#xff0c;請按照以下步驟操作&#xff1a; 1. 安裝必要工具 確保已安裝 Git 并配置用戶名和郵箱&#xff1a; git config --global user.name "你的用戶名" git config --global user.email "你的郵箱" 在 VS Cod…

開源夜鶯支持MySQL數據源,更方便做業務指標監控了

夜鶯監控項目最核心的定位&#xff0c;是做一個告警引擎&#xff0c;支持多種數據源的告警。這個版本的更新主要是增加了對 MySQL 數據源的支持&#xff0c;進一步增強了夜鶯在業務指標監控方面的能力。 之前版本的夜鶯主要聚焦在 Prometheus、VictoriaMetrics、ElasticSearch…

SpringCloud + MybatisPlus:多租戶模式與實現

一、多租戶的基本概念 多租戶(Multi-Tenancy) 是指在一套軟件系統中,多個租戶(客戶)共享相同的基礎設施和應用程序,但數據和配置相互隔離的架構模式。其核心目標是 降低成本 和 保證數據安全。 核心特點: 資源共享:租戶共享服務器、數據庫、代碼等資源。數據隔離:通…

Kafka入門:解鎖核心組件,開啟消息隊列之旅

一、引言 Kafka以超高速吞吐、精準的路由策略和永不掉線的可靠性&#xff0c;讓海量數據在分布式系統中暢行無阻。無論你是剛接觸消息隊列的技術小白&#xff0c;還是尋求性能突破的開發老手&#xff0c;掌握 Kafka 核心組件的運作原理&#xff0c;都是解鎖高效數據處理的關鍵…

前端項目Excel數據導出同時出現中英文表頭錯亂情況解決方案。

文章目錄 前言一、Excel導出出現中英文情況。二、解決方案數據處理 三、效果展示總結 前言 在前端項目中實現Excel導出功能時&#xff0c;數據導出excel是常見的業務需求。但excel導出完表頭同時包含了中文和英文的bug&#xff0c;下面是我的經驗分享&#xff0c;應該可以幫助…

《開竅》讀書筆記8

51.學會贊美他人&#xff0c;能凈化心靈&#xff0c;建立良好人際關系&#xff0c;讓生活充滿陽光。 52.欣賞他人的學習過程&#xff0c;能激發潛能&#xff0c;促進相互成長&#xff0c;讓有點共存。 53.別因“自我”一葉障目&#xff0c;要關注他人&#xff0c;欣賞與別欣賞式…

基于 Spring Cloud Gateway + Sentinel 實現高并發限流保護機制

基于 Spring Cloud Gateway Sentinel 實現視頻播放接口限流保護機制 作者&#xff1a;NovaTube 開發者 &#xff5c; 時間&#xff1a;2025-06 標簽&#xff1a;Spring Cloud Gateway、Sentinel、微服務、限流、接口保護 一、背景介紹 在我們開發的在線視頻分享平臺 NovaTube…

CountDownLatch入門代碼解析

文章目錄 核心思想&#xff1a;火箭發射倒計時 &#x1f680;最簡單易懂的代碼示例代碼解析運行流程分析 核心思想&#xff1a;火箭發射倒計時 &#x1f680; 想象一下發射火箭的場景&#xff0c;在按下最終的發射按鈕之前&#xff0c;必須有好幾個系統同時完成自檢&#xff0…

用Python寫一個可視化大屏

用Python打造可視化大屏&#xff1a;數據洞察新視界 在當今數據爆炸的時代&#xff0c;數據可視化成為了理解和傳達復雜信息的關鍵工具。Python作為一門強大且靈活的編程語言&#xff0c;提供了豐富的庫和工具&#xff0c;讓我們能夠創建出令人驚嘆的可視化大屏。本文將帶你逐步…

20250611讓NanoPi NEO core開發板在Ubuntu core16.04系統下開機自啟動的時候拉高GPIOG8

rootNanoPi-NEO-Core:/# touch open_4g_ec20.sh rootNanoPi-NEO-Core:/# vi open_4g_ec20.sh 【打開使能引腳200 IOG8】 echo 200 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio200/direction echo 1 > /sys/class/gpio/gpio200/value 【切記&#xff1a…

解惑1、為何大容量電容濾低頻,小容量電容濾高頻

一、電容的種類&#xff1a; 鏈接&#xff1a; 二、疑惑 理論推算&#xff1a; 1&#xff09;Zc1/wc&#xff0c;那么大容量和小容量的電容&#xff0c;不應該都是 越高頻越阻抗低&#xff0c;越容易通過&#xff1f; 2&#xff09;大容量&#xff0c;積蓄電荷速度慢&#…

如何有效監控JVM環境,保障應用性能

緩慢的Java應用程序、意外崩潰和晦澀的內存問題——這些都是JVM可能在默默承受壓力的信號。JVM監控對于保障Java應用的正常運行時間和最佳性能至關重要&#xff0c;它提供了對Java虛擬機內存、線程和CPU資源使用情況的可見性&#xff0c;使管理員能夠在影響終端用戶之前識別性能…