gdb调试技巧
如何生成core文件系统ulimit -c大于0,一般设为unlimited,进程接收到异常信号后,默认是生成core文件,如果/proc/sys/kernel/core_pattern为core,则文件生成在进程的getcwd工作目录,如果/proc/sys/kernel/core_uses_pid为1,则core文件以pid结尾。
对于正在运行的进程,如果不想让进程退出,可以用gcore pid生成该进程的core文件。
对于代码中有对异常信号进行处理的情况,则接收到异常信号时,进入自定义的信号处理函数中,不再生成core文件,此时如果还想生成core文件,需要在处理函数末尾做如下处理:12signal(signo, SIG_DFL); // 默认生成core文件kill(getpid(), signo); // signo为当前正在处理的信号类型
如果系统没有设置为unlimited,可以在程序中进行修改,这样只对本进程有效,修改完成后,可以在/proc/pid/limits查看。1234567#include <sys/resource.h>struct rlimi
...