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文件,需要在处理函数末尾做如下处理:
1 | signal(signo, SIG_DFL); // 默认生成core文件 |