core文件的产生

配置Core文件生成

查看core文件产生的条件限制  ulimit -a

 

1. 在当前的shell窗口下设置产生core文件的条件

ulimit -c unlimited 

或 ulimit -c 1024

 

2. 设置当前的账户产生core文件

在特定的用户环境下打开core文件产生的设置

在用户的~/.bash_profile里加上ulimit -c unlimited来让特定的用户可以产生core文件

 

3. 为所有用户设置产生core文件条件

         在/etc/profile文件中最后加上一行设置条件  ulimit -c unlimited 

 

 

 

参考 http://longmans1985.blog.163.com/blog/static/70605475200910244184216/>

在 Linux 系统中,当程序发生崩溃(如段错误)时,系统可以生成一个名为 `core` 或 `core.<pid>` 的文件(具体文件名取决于 `/proc/sys/kernel/core_pattern` 的设置),这个文件就是核心转储文件core dump),它记录了程序崩溃时的内存状态,可以用于调试。 ### 查看和调试 core 文件的方法如下: #### 1. 确保系统允许生成 core 文件 默认情况下,core 文件的大小限制为 0,即不允许生成。你需要先设置: ```bash ulimit -c unlimited ``` 这将允许生成无大小限制的 core 文件。 #### 2. 生成 core 文件 运行一个会崩溃的程序,例如下面的 C 程序: ```c // crash.c #include <stdio.h> int main() { int *p = NULL; *p = 0; // 引发段错误 return 0; } ``` 编译时带上 `-g` 选项以保留调试信息: ```bash gcc -g -o crash crash.c ``` 运行程序: ```bash ./crash ``` 程序会崩溃并生成 core 文件(如 `core` 或 `core.12345`)。 #### 3. 使用 gdb 查看 core 文件 使用 `gdb`(GNU Debugger)来调试 core 文件: ```bash gdb ./crash core ``` 进入 gdb 后,可以使用以下命令查看崩溃信息: - `bt`:查看崩溃时的堆栈信息(backtrace) - `info registers`:查看寄存器状态 - `list`:查看源代码 - `print variable_name`:打印变量值 示例 gdb 会话: ```bash (gdb) bt #0 0x0000555555555131 in main () at crash.c:6 (gdb) list 1 #include <stdio.h> 2 3 int main() { 4 int *p = NULL; 5 *p = 0; // 引发段错误 6 return 0; 7 } (gdb) ``` 可以看到崩溃发生在 `crash.c` 第 5 行,即空指针解引用。 --- ### 总结 - 设置 `ulimit -c unlimited` 允许生成 core 文件; - 使用 `gdb <可执行文件> <core文件>` 加载 core 文件; - 使用 `bt` 查看堆栈信息定位崩溃位置。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值