-g 選項包含除錯資訊。#include <stdio.h>
int core_dump() {
int i;
for (i = 5; i >= 0; i--) {
printf("(%d, %d)\n", i, 100 / i);
}
return 0;
}
int main() {
core_dump();
return 0;
}
gcc -g main.c ./a.out
輸出:
(5, 20) (4, 25) (3, 33) (2, 50) (1, 100) [1] 9662 floating point exception (core dumped) ./a.out
gdb ./a.out core # 輸出關鍵資訊: #0 0x08048415 in core_dump () at main.c:7 #1 0x0804844b in main () at main.c:14
加上 -g 後可顯示具體檔案名與行號。若系統預設 core 檔案大小為 0,需執行 ulimit -c 1024 設定允許大小。
並非所有異常都會產生 core dump,具體參考《Unix 環境高級程式設計》第十章 信號。