如果在生产环境下已经是chdir("/")的情况下,如何产生core文件
a)首先确定ulimit 的设置
ulimit -a -->查看当前的ulimit限制; ulimit -c 1024000 -->设置core file size大小,缺省为0即不让生成core文件 b)针对不同的操作系统,core文件生成的文件名及位置是可设置的; ----------- Linux ----------- 修改:/proc/sys/kernel/core_pattern 例如: echo "/tmp/core-%e-%p" >/proc/sys/kernel/core_pattern 其中 %e:进程名, %p:进程号, 也可增加其它,具体参考 man core-----------
AIX ----------- 通过 chcore 命令修改 例如: lscore -->查看当前core规则 chcore -p on -->与-l配套使用 chcore -n on -->core文件中上加进程号及时间 chcore -l "/tmp" -->指定生成的/tmp下去 ==>以上设置后,就算chdir("/"), 在异常退出的情况下也会生成core文件; core文件分析方式: linux: gdb <bin> <core> aix: file core* dbx <bin> <core> >where -->最常用的命令,core在哪了?显示当时的函数堆栈列表 注: where 有时会查不到故障定位,报错,why? 可能的原因: 1)生成的core文件很大,如20M,ulimit -c 限制为10M,这样的话,core文件被截短了,有些内容看不到了; 2)函数堆栈列表也是进程空间内的数据,如果指针越界的话,可能会将该数据区的数据搞乱了;