首先,简要描述一下情况:计算机隐藏在某种画廊的显示器附近,充当了作品的静音主力.尽管有程序员的最佳意图,这件作品可能会不时地崩溃,这取决于路人与显示器的交互.程序员已经装配好计算机以使用bash循环自动重启相关程序,因为正常运行时间(或类似的东西)是非常宝贵的.
开发人员希望确定崩溃的原因是什么,但是通过GDB运行程序 – 尽管这是开发人员的知识 – 会导致进程在崩溃时停止.这确实可以让开发人员利用“回溯”找到原因,但是在开发人员前往相关画廊检查它之前,这件作品将无法使用.这不好.
这个勇敢的开发人员如何通过GDB安全地回溯每次崩溃(并且可能将它们存储在某处),但仍然允许在崩溃时自动重启进程的原始行为?
解决方法:
在启动程序之前运行ulimit -c 1073741824.下次程序崩溃时,将在工作目录中创建核心转储(名为core.< PID>).然后,您可以随时使用GDB打开此核心.
ulimit -c XXXXX设置程序seg出错时创建的核心转储文件的最大大小.默认情况下,这是0,这意味着不转储核心.