日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux下core dump--转载

發布時間:2025/4/5 linux 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux下core dump--转载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文鏈接:https://www.cnblogs.com/Anker/p/6079580.html

1、前言

  一直在從事linux下后臺開發,經常與core文件打交道。還記得剛開始從事linux下開發時,程序突然崩潰了,也沒有任何日志。我不知所措,同事叫我看看core,我卻問什么是core,怎么看。同事鄙視的眼神,我依然在目。后來學會了從core文件中分析原因,通過gdb看出程序掛再哪里,分析前后的變量,找出問題的原因。當時就覺得很神奇,core文件是怎么產生的呢?難道系統會自動產生,可是我在自己的linux系統上面寫個非法程序測試,并沒有產生core問題?這又是怎么回事呢?今天在ngnix的源碼時候,發現可以在程序中設置core dump,又是怎么回事呢?在公司發現生成的core文件都帶有進程名稱、進程ID、和時間,這又是怎么做到的呢?今天帶著這些疑問來說說core文件是如何生成,如何配置。

2、基本概念

   當程序運行的過程中異常終止或崩潰,操作系統會將程序當時的內存狀態記錄下來,保存在一個文件中,這種行為就叫做Core Dump(中文有的翻譯成“核心轉儲”)。我們可以認為 core dump 是“內存快照”,但實際上,除了內存信息之外,還有些關鍵的程序運行狀態也會同時 dump 下來,例如寄存器信息(包括程序指針、棧指針等)、內存管理信息、其他處理器和操作系統狀態和信息。core dump 對于編程人員診斷和調試程序是非常有幫助的,因為對于有些程序錯誤是很難重現的,例如指針異常,而 core dump 文件可以再現程序出錯時的情景。

3、開啟core dump

  可以使用命令ulimit開啟,也可以在程序中通過setrlimit系統調用開啟。

程序中開啟core dump,通過如下API可以查看和設置RLIMIT_CORE

#include <sys/resource.h>int getrlimit(int resource, struct rlimit *rlim); int setrlimit(int resource, const struct rlimit *rlim);

參考程序如下所示:

#include <unistd.h> #include <sys/time.h> #include <sys/resource.h> #include <stdio.h> #define CORE_SIZE 1024 * 1024 * 500 int main() {struct rlimit rlmt;if (getrlimit(RLIMIT_CORE, &rlmt) == -1) {return -1; } printf("Before set rlimit CORE dump current is:%d, max is:%d\n", (int)rlmt.rlim_cur, (int)rlmt.rlim_max);rlmt.rlim_cur = (rlim_t)CORE_SIZE;rlmt.rlim_max = (rlim_t)CORE_SIZE;if (setrlimit(RLIMIT_CORE, &rlmt) == -1) {return -1; } if (getrlimit(RLIMIT_CORE, &rlmt) == -1) {return -1; } printf("After set rlimit CORE dump current is:%d, max is:%d\n", (int)rlmt.rlim_cur, (int)rlmt.rlim_max);/*測試非法內存,產生core文件*/int *ptr = NULL;*ptr = 10; return 0; }

執行./main, 生成的core文件如下所示

GDB調試core文件,查看程序掛在位置。當core dump 之后,使用命令?gdb program core?來查看 core 文件,其中 program 為可執行程序名,core 為生成的 core 文件名。

4、參考資料

http://www.cnblogs.com/hazir/p/linxu_core_dump.html

http://www.cnblogs.com/niocai/archive/2012/04/01/2428128.html

http://baidutech.blog.51cto.com/4114344/904419/

轉載于:https://www.cnblogs.com/xibuhaohao/p/11057834.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的linux下core dump--转载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。