在不停止进程的情况下捕获并记录 GDB 回溯

在不停止进程的情况下捕获并记录 GDB 回溯

首先,对情况进行简要描述:一台计算机隐藏在某种画廊的显示器附近,充当一件作品的沉默主力。尽管程序员的初衷是好的,但根据路人与显示器的交互情况,该作品可能会不时崩溃。由于正常运行时间(或类似的时间)非常宝贵,程序员使用 bash 循环将计算机设置为自动重新启动相关程序。

开发人员很想确定任何崩溃的原因是什么,但据开发人员所知,通过 GDB 运行程序将导致进程在崩溃时停止。这确实使开发人员能够点击“回溯”并找到原因,但在开发人员前往相关画廊进行检查之前,该作品将无法操作。这可不行。

这位勇敢的开发人员如何通过 GDB 保护每次崩溃的回溯(并可能将它们存储在某个地方),同时仍然允许在崩溃时自动重新启动进程的原始行为?

答案1

ulimit -c 1073741824在启动程序之前运行。下次程序崩溃时,将在工作目录(名为core.<PID>)中创建核心转储。然后您可以随时使用 GDB 打开该核心。

ulimit -c XXXXX设置程序段故障时创建的核心转储文件的最大大小。默认情况下,这0意味着不转储核心。

相关内容