如何配置GDB使其在交互式使用时仍生成core文件?
GDB交互式模式下生成core文件的配置方法
是的,你可以配置GDB在交互式使用时生成core文件,以下是可写入.gdbinit初始化文件的具体方案:
方案1:程序崩溃时自动生成core文件(保留调试断点)
如果想让程序崩溃时,GDB既停在崩溃点供你调试,又自动生成core文件,把以下内容加到~/.gdbinit里:
# 捕获常见致命信号 catch signal SIGSEGV catch signal SIGABRT catch signal SIGILL catch signal SIGFPE # 信号触发时执行的动作:生成带进程ID的core文件,保持调试状态 commands generate-core-file core.%p end
core.%p里的%p会替换为进程ID,避免多个core文件互相覆盖。
方案2:让系统内核生成core文件
如果更倾向于用系统原生方式生成core文件,需要让GDB不拦截致命信号,把以下内容加到~/.gdbinit:
# 让GDB不处理致命信号,交给系统生成core handle SIGSEGV pass nostop noprint handle SIGABRT pass nostop noprint handle SIGILL pass nostop noprint handle SIGFPE pass nostop noprint
注意:这种方式下程序崩溃后GDB不会自动停住,需要你手动重新附加进程调试。
额外提示
- 先确保系统允许生成core文件:终端执行
ulimit -c unlimited临时生效,要永久生效就把这条命令加到~/.bashrc或/etc/profile里。 - 你可以自定义core文件名,比如
core.%p.%t会加上时间戳,进一步避免文件冲突。
内容的提问来源于stack exchange,提问作者intrigued_66
相关产品推荐
相关产品推荐

