Docker中產生Core Dump檔案

2021-10-04 12:29:22 字數 2574 閱讀 6683

在linux中,要使得程式崩潰時產生core dump檔案,首先需要設定core檔案的大小,預設的core dump文大小最大為0,也就是預設不產生,在這裡我們就不做限制,執行

ulimit -c unlimited
可以通過以下命令檢視當前ulimit配置

[root@proxy-demo ~]

# ulimit -a

core file size (blocks, -c) unlimited

data seg size (kbytes, -d) unlimited

scheduling priority (-e) 0

file size (blocks, -f) unlimited

pending signals (-i) 63013

max locked memory (kbytes, -l) 64

max memory size (kbytes, -m) unlimited

open files (-n) 60000

pipe size (512 bytes, -p) 8

posix message queues (bytes, -q) 819200

real-time priority (-r) 0

stack size (kbytes, -s) 8192

cpu time

(seconds, -t) unlimited

max user processes (-u) 63013

virtual memory (kbytes, -v) unlimited

file locks (-x) unlimited

選項

含義例子

-h設定硬資源限制,一旦設定不能增加。

ulimit – hs 64;限制硬資源,執行緒棧大小為 64k。

-s設定軟資源限制,設定後可以增加,但是不能超過硬資源設定。

ulimit – sn 32;限制軟資源,32 個檔案描述符。

-a顯示當前所有的 limit 資訊。

ulimit – a;顯示當前所有的 limit 資訊。

-c最大的 core 檔案的大小, 以 blocks 為單位。

ulimit – c unlimited; 對生成的 core 檔案的大小不進行限制。

-d程序最大的資料段的大小,以 kbytes 為單位。

ulimit -d unlimited;對程序的資料段大小不進行限制。

-f程序可以建立檔案的最大值,以 blocks 為單位。

ulimit – f 2048;限制程序可以建立的最大檔案大小為 2048 blocks。

-l最大可加鎖記憶體大小,以 kbytes 為單位。

ulimit – l 32;限制最大可加鎖記憶體大小為 32 kbytes。

-m最大記憶體大小,以 kbytes 為單位。

ulimit – m unlimited;對最大記憶體不進行限制。

-n可以開啟最大檔案描述符的數量。

ulimit – n 128;限制最大可以使用 128 個檔案描述符。

-p管道緩衝區的大小,以 kbytes 為單位。

ulimit – p 512;限制管道緩衝區的大小為 512 kbytes。

-s執行緒棧大小,以 kbytes 為單位。

ulimit – s 512;限制執行緒棧的大小為 512 kbytes。

-t最大的 cpu 占用時間,以秒為單位。

ulimit – t unlimited;對最大的 cpu 占用時間不進行限制。

-u使用者最大可用的程序數。

ulimit – u 64;限制使用者最多可以使用 64 個程序。

-v程序最大可用的虛擬記憶體,以 kbytes 為單位。

ulimit – v 200000;限制最大可用的虛擬記憶體為 200000 kbytes。

在寫程式的時候,我們可能會希望在一些嚴重錯誤發生的時候終止程式執行。除了打日誌和 exit() 以外,我們還可以選擇使用 abort()。當執行 abort() 的時候,程式直接退出,不執行清掃,並且會產生 core dump 檔案(如果 ulimit 允許的話)。

在宿主機上執行

echo

'/tmp/core.%t.%e.%p'

|sudo

tee /proc/sys/kernel/core_pattern

另外,在 docker run 的時候要加上以下引數

--ulimit core=-1 --security-opt seccomp=unconfined
前者就是把 core dump 檔案的大小設定為無限制,後者是為了開放 ptrace 系列高許可權的系統呼叫,這樣我們才可以在 docker 裡面使用 gdb。

linux 中產生swap檔案

有時候在用vim開啟檔案時提示類似以下的資訊 e325 注意 發現交換檔案 exportcert.cpp.swp 所有者 liuchuanliang 日期 thu mar 1 17 15 41 2012 檔名 liuchuanliang ftsafe entersafe shuttle linux ...

VC中產生隨機數

需要的標頭檔案 stdlib.h 庫函式 srand rand time 方法 1.首先設定種子srand unsigned time null 使用當前時間作為種子是多數人的習慣做法 2.產生隨機數 rand 可以產生乙個隨機數 範圍在0 rand max 32767 之間 如果要產生乙個 min...

unity foreach 中產生GC的問題

問題產生 在unity中使用foreach會又明顯的gc產生,而這些gc又是不必要的 問題原因 網上有很多答案,但是很多人都止步與這是乙個bug,但是對這個bug產生的原因沒有做過多的深究,其實原因很簡單,是因為老版本的mono編輯器 並不是unity的問題,所有以為把unity4.x公升到unit...