### :-: 核心轉儲
當程序運行的過程中異常終止或崩潰,操作系統會將程序當時的內存、寄存器狀態、堆棧指針、內存管理信息等記錄下來,保存在一個文件中,這種行為就叫做核心轉儲(Core Dump)。
1. #### 會產生核心轉儲的信號
| Signal | Action | Comment |
| :----- | :-----| :----- |
| SIGQUIT | Core | Quit from keyboard |
| SIGILL | Core | Illegal Instruction |
| SIGABRT | Core | Abort signal from abort |
| SIGSEGV | Core | Invalid memory reference |
| SIGTRAP | Core | Trace/breakpoint trap |
2. #### 開啟核心轉儲
輸入命令 `ulimit -c`,輸出結果為` 0`,說明默認是關閉的。
輸入命令 `ulimit -c unlimited `即可在當前終端開啟核心轉儲功能。
如果想讓核心轉儲功能永久開啟,可以修改文件 `/etc/security/limits.conf`,增加一行:
```
#<domain> <type> <item> <value>
* soft core unlimited
```
3. #### 修改轉儲文件保存路徑
? 通過修改?`/proc/sys/kernel/core_uses_pid`,可以使生成的核心轉儲文件名變為?`core.[pid]`?的模式。
`# echo 1 > /proc/sys/kernel/core_uses_pid`
? 還可以修改?`/proc/sys/kernel/core_pattern`?來控制生成核心轉儲文件的保存位置和文件名格式。
`# echo /tmp/core-%e-%p-%t > /proc/sys/kernel/core_pattern`
此時生成的文件保存在`?/tmp/`?目錄下,文件名格式為`?core-[filename]-[pid]-[time]`。
4. #### 使用 gdb 調試核心轉儲文件
`gdb [filename] [core file]`