Linux 下的 core dump

来源:http://www.cnblogs.com/Lynn-Zhang/archive/2016/07/16/5673867.html
-Advertisement-
Play Games

core dump 的基本概念 當一個進程要異常終止時 ,可以選擇把進程的用戶空間記憶體數據全部保存到磁碟上 ,文件名通常是 core, 這叫做 Core Dump。通常情況下,core文件會包含了程式運行時的記憶體,寄存器狀態,堆棧指針,記憶體管理信息還有各種函數調用堆棧信息等,我們可以理解為是程式工作 ...


  core dump 的基本概念      當一個進程要異常終止時 ,可以選擇把進程的用戶空間記憶體數據全部保存到磁碟上 ,文件名通常是 core, 這叫做 Core Dump通常情況下,core文件會包含了程式運行時的記憶體,寄存器狀態,堆棧指針,記憶體管理信息還有各種函數調用堆棧信息等,我們可以理解為是程式工作當前狀態存儲生成第一個文件,程式出錯的時候理論上都會產生一個core文件,通過工具分析這個文件,我們可以定位到程式異常退出的時候對應的堆棧調用等信息,找出問題所在併進行及時解決。   進程異常終止通常是因為有Bug, 比如,非法記憶體訪問導致段錯誤 ,事後可以用調試器檢查 core文件以查清錯誤原因 ,這叫做Post-mortem Debug 。一個進程允許產生多大的 core文件取決於進程的 Resource Limit( 這個信息保存 在 PCB中 )。     開啟或關閉core文件   預設是不允許產生 core文件的 ,因為 core文件中可能包含用戶密碼等敏感信息 ,不安全;除此之外,每core dump一次就會產生一個core文件,次數多了占用記憶體空間,所以一般預設情況下是不允許生成core文件的,除非由於後臺測試的需要,你自己對該項設置進行了更改。
$ ulimit -a 
利用上面的命令我們可以查看系統設定的core文件選項:

  在開發調試階段可以用 ulimit 命令改變這個限制 ,允許產生 core文件。

  $ ulimit -c [size]
 例如:  用ulimit 命令改變Shell 進程的 Resource Limit,允許 core文件最大為 1024K。這樣進程被down掉後,就會產生core文件了
$ ulimit -c 1024

  

當然,如果不想生成core文件,可以使用命令: $ ulimit -c 0

 

  實 例

 SIGQUIT信號(鍵入Ctrl-\) 的預設處理動作是終止進程並且core dump!

寫一個死迴圈程式,前臺運行這個程式,然後鍵入 Ctrl-\ ,使該進程收到SIGQUIT信號後終止並產生core文件

/*************************************************************************
 > File Name: test.c
 > Author:Lynn-Zhang
 > Mail: [email protected]
 > Created Time: Fri 15 Jul 2016 03:03:57 PM CST
 ************************************************************************/

#include<stdio.h>
int main()
{
    printf("pid is :%d\n",getpid());
    while(1);
    return 0;
}

   

這裡的core.2678就是該進程被down掉所對應的core文件,其中的2678是該進程的pid。

ulimit 命令改變了Shell 進程的 Resource Limit,test進程的 PCB由 Shell進程複製而來 ,所以也具有和 Shell進程相同的 Resource Limit值 ,這樣就可以產生 Core Dump了。     core文件的使用 在core文件所在目錄下,gdb目標文件,它會啟動GNU的調試器,來調試core文件,並且會顯示 生成此core文件的程式名,中止此程式的信號等等

 

 除此之外,core文件的內容是二進位的!

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Centos vsftpd伺服器搭建 時間:2016-07-18 1.最為簡單的vsftpd伺服器搭建 1.安裝vsftpd 1.yum 安裝 2.rpm文件安裝(如果沒有rpm文件,可以到http://rpmfind.net/網站下載) 2.防火牆(centos 6.5 使用的是iptables防 ...
  • linux mkdir 命令 用來創建指定的名稱的目錄,要求創建目錄的用戶在當前目錄中具有寫許可權,並且指定的目錄名不能是當前目錄中已有的目錄。1.命令格式:mkdir [選項] 目錄...2.命令功能:通過 mkdir 命令可以實現在指定位置創建以 DirName(指定的文件名)命名的文件夾或目錄。 ...
  • Linux中用 pwd 命令來查看”當前工作目錄“的完整路徑。 簡單得說,每當你在終端進行操作時,你都會有一個當前工作目錄。 在不太確定當前位置時,就會使用pwd來判定當前目錄在文件系統內的確切位置。1.命令格式: pwd [選項]2.命令功能: 查看”當前工作目錄“的完整路徑3.常用參數:一般情況 ...
  • 安裝mysql 使用yum命令進行下載mysql軟體,安裝是要root的許可權,su這個命令可以獲得許可權。 [root@centos6 administrator]# yum install mysql-server 跟系統一起啟動命令: chkconfig –levels 235 mysqld on ...
  • 作為碼農怎麼能不用谷歌呢? 我來做下shadowsocks服務的搭建。 Shadowsocks使用socks5代理,用於保護網路流量。在中國大陸被廣泛用於突破防火長城(GFW),以瀏覽被封鎖的內容。 Shadowsocks分為伺服器端和客戶端。在使用之前,需要先將伺服器端部署在支持Python的服務 ...
  • 信號的基本概念: 每個信號都有一個編號和一個巨集定義名稱 ,這些巨集定義可以在 signal.h 中找到。 使用kill -l命令查看系統中定義的信號列表: 1-31是普通信號; 34-64是實時信號 所有的信號都由操作系統來發! 對信號的三種處理方式:忽略信號、直接執行進程對於該信號的預設動作、執行自 ...
  • 方法一 1、安裝samba:可以先檢查下是否已經安裝:rpm -qa | grep samba,沒有的話自己安裝下,這裡介紹下基於RPM包的一種線上安裝模式yumyum是一種快速安裝模式,它會自動解決軟體安裝時的依賴問題並自動去特定的伺服器下載相應的軟體進行安裝,命令十分簡單:yum install ...
  • ln是linux中又一個非常重要命令,它的功能是為某一個文件在另外一個位置建立一個同不的鏈接,這個命令最常用的參數是-s,具體用法是:ln –s 源文件 目標文件。 當我們需要在不同的目錄,用到相同的文件時,我們不需要在每一個需要的目錄下都放一個必須相同的文件,我們只要在某個固定的目錄,放上該文件, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...