2015-05-06 70 views
1

減少核心轉儲大小的最佳方法是什麼?減少linux上的核心轉儲大小

我的問題是,我的Linux Mint上的目標空間很小。我有大約200 MB,這遠遠不足以讓我的程序生成一個體面的轉儲。我已經嘗試配置coredump過濾器,但只有匿名私有映射轉儲在大小上做了任何重大更改,但也使我的轉儲無法讀取。我也嘗試用ulimit限制大小,但唯一的結果是每次都會截斷轉儲。

我的問題是,控制核心轉儲大小的最佳方法是什麼? 有沒有辦法只保留轉儲的前10-15幀?如果只生成無用的核心文件,那麼使用ulimit設置大小限制的用途是什麼?

+0

擁有更多磁盤空間可能會更簡單。你甚至可以嘗試插入一些廉價的USB密鑰(在它上面有一些Ext4文件系統),然後在其中運行你的程序。 –

+0

@BasileStarynkevitch不幸的是,這不是一個選項。在這種情況下,我的硬件非常有限。這實際上是問題的根源。 – Carlos

回答

1

考慮使用Breakpad:https://code.google.com/p/google-breakpad/ https://code.google.com/p/google-breakpad/wiki/GettingStartedWithBreakpad

Breakpad是一個圖書館和工具套件,可讓您分發 應用程序的用戶在緊湊型「小型轉儲編譯器提供的調試信息 刪除,記錄崩潰「文件,將它們發送回 您的服務器,並從這些小型轉儲中生成C和C++堆棧跟蹤。 Breakpad也可以根據請求爲 未崩潰的程序寫入小型轉儲。

+0

這看起來很有希望。我一定會考慮它,謝謝! – Carlos

0

看來,這裏有幾個相關答案在計算器上:

Minimal core dump (stack trace + current frame only)

此鏈接提示設置爲SIGSEGV的信號處理程序,並以自己的方式傾倒的核心。

Linux core dumps are too large!

此鏈接建議使用了setrlimit限制轉儲的大小。

+0

簡單地設置核心的大小限制只會導致它被截斷,據我所知,這是無用的。關於另一種方法,我對寫信號處理程序並不是很熟悉,但我會嘗試一下,謝謝! – Carlos

+0

讓我知道它是怎麼回事! – timato