2013-08-21 67 views
1

我在這兒有一個擺設,幾天前我能看到目標板上的核心笨拙文件,我通過在我的/etc/profile中添加「ulimit -c unlimited」來提供核心生成器生成支持。但是後來有人告訴我me爲什麼Coredump文件不在這裏生成?

這隻會影響從登錄shell啓動的程序,而不會影響systemd啓動的進程/服務,etc/limits會設置這些默認值的正確位置。

所以我改變了的/ etc/limits文件,並添加「的ulimit -c無限」 line.but現在我看不到Coredumped文件

我正在殺-9 $$產生依次分段錯誤,它會像以前那樣生成coredump文件。

我們試圖改變「的/ proc/sys目錄/內核/ core_pattern」文件並運行的ulimit -c無限還明確,但其不工作了太

我們在哪裏做錯了?

+2

'kill'命令的'-9'是'KILL'信號,並且只會在沒有核心轉儲的情況下終止進程。 –

+0

所以@JoachimPileborg你建議,我怎麼能在我的情況下使用kill命令? –

+1

參見例如[這個問題和答案](http://stackoverflow.com/q/6561194/440558)。 –

回答

3

kill -9將不會生成核心文件。命令kill -l給出了支持的信號列表。 kill -6kill -SIGABRT應該產生一個核心文件。以及大多數其他信號如,kill -SEGV

1

殺-11總是爲我工作。 11是SIGSEGV(無效內存引用)

+0

但這是一個壞主意。一些奇怪的程序可能會捕獲SIGSEGV; 'SIGABRT'更傳統一些,而捕捉它的少數程序知道它的意義。 –

+0

即刻工作! – Aadishri

-1

您必須先啓用用戶限制設置,以確保可以創建核心文件。

ulimit -c unlimited 

應用程序用戶必須在同一會話中啓動應用程序之前運行。此設置由應用程序繼承,因此在啓動應用程序之前設置的ulimit是應用程序的ulimit設置(除非啓動腳本更改它)。

0

另外其他的答案,你也可以使用gcore(1)生成一個核心轉儲一些運行過程。

但是,如果使用kill(1)命令(或底層kill(2)系統調用,例如從一些自組織程序),我建議使用SIGABRT(信號即abort(3)發送給自身解鎖它之後),作爲記錄在​​。

請注意,程序通常可以禁止核心轉儲,例如,通過調用setrlimit(2),RLIMIT_CORE設置爲0或處理或忽略某些信號(例如sigaction(2) ...)。

相關問題