我正在尋找一種方法來選擇核心轉儲中包含的部分和內存區域。
我的應用程序的核心轉儲大小約爲30GB,其中大部分是預分配的緩衝區,我甚至在調試時甚至不需要(以後可以調零)。但是,由於轉儲非常大,應用程序需要很長時間才能完成崩潰並開始恢復。
任何人都可以想出一種方法來預先選擇哪些段將在覈心轉儲中?
謝謝Linux中的選擇性核心轉儲 - 如何選擇轉儲的部分?
11
A
回答
16
按照core(5)
手冊頁,可以設置哪些映射寫入核心文件:
由於內核2.6.23的Linux特定 的/ proc/PID/coredump_filter文件可以 用於控制將哪個內存段 寫入到核心轉儲文件 中,該核心轉儲是 對於 對應的進程ID執行的進程。
該文件中的值是 內存映射類型的位掩碼(請參見mmap(2))。 如果在掩碼中設置了一個位,則會轉儲 類型的內存映射;否則他們是 不傾銷。 具有以下含義在此文件中位:
bit 0 Dump anonymous private mappings. bit 1 Dump anonymous shared mappings. bit 2 Dump file-backed private mappings. bit 3 Dump file-backed shared mappings. bit 4 (since Linux 2.6.24) Dump ELF headers. bit 5 (since Linux 2.6.28) Dump private huge pages. bit 6 (since Linux 2.6.28) Dump shared huge pages.
默認情況下,下面的位被設置:0,1,4(如果 CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS 內核配置選項被激活),和5. 的此文件的值以十六進制顯示。 (因此 默認值顯示爲33.) 內存映射I/O頁(如幀緩衝區)永遠不會轉儲,並且無論coredump_filter 值如何,始終都會轉儲虛擬DSO頁。
...
這個文件如果內核是用 CONFIG_ELF_CORE配置選項內置僅供。
0
我不確定是否可以設置轉儲內存的哪一部分。含有終止
作爲一個選項的時間進程的內存映像
從man 5 core
磁盤文件可以截斷使用
setrlimit
有RLIMIT_CORE
參數核心文件。
相關問題
- 1. 選擇性轉儲PyYAML
- 2. Linux核心轉儲vs堆轉儲?
- 3. Linux核心轉儲過大!
- 4. MySQL的轉儲選擇
- 5. 分割錯誤(核心轉儲)C linux
- 6. 分割錯誤(核心轉儲),linux,g ++
- 7. 核心轉儲?
- 8. 轉儲選擇GPUView事件
- 9. Django選擇性轉儲數據
- 10. 核心轉儲注意部分
- 11. 分析核心轉儲
- 12. Solaris核心轉儲分析
- 13. c分割核心轉儲?
- 14. Linux的 - 不能generete核心轉儲
- 15. 在Linux核心轉儲中僅轉儲堆棧跟蹤
- 16. 如何分析核心轉儲
- 17. QThread轉儲核心
- 18. Aborted(核心轉儲)
- 19. gnuplot:Aborted(核心轉儲)
- 20. 哪裏是核心轉儲? (Linux)
- 21. c linux中的分段錯誤(核心轉儲)
- 22. linux中的C分割錯誤(核心轉儲)錯誤
- 23. pthread_mutex_lock上的核心轉儲
- 24. C++的核心轉儲分段錯誤
- 25. 中止核心轉儲
- 26. 中止(核心轉儲)
- 27. 中止(轉儲核心)
- 28. 核心選擇器的「核心選擇」事件是如何工作的?
- 29. 如何從停止的程序(Linux)的核心轉儲
- 30. 如何選擇的一部分「選擇」
謝謝。正是我在找什麼。 – 2011-01-31 05:28:46