在Gnu/Linux中,如何指定核心转储的文件名和目录?

guykilcj  于 2023-03-17  发布在  Linux
关注(0)|答案(1)|浏览(123)

我的应用程序经常崩溃,我想知道确切的堆栈跟踪和变量。有一个boost stacktrace可以跟踪函数,但不能跟踪变量值。使用setrlimit设置内核转储限制应用程序中的()运行正常,并且在使用调试符号编译时生成了核心转储。我需要的是核心转储文件的特定名称(以及存储它的位置)。有没有办法在应用程序内部更改它,而不为整个系统更改它?

1mrurvl1

1mrurvl11#

不,你不能这么做,因为在核心转储生成的那一刻,你的进程已经死了,控制权在内核上,内核不再知道你的进程的配置。
正如您所发现的,有一个系统范围的核心转储处理程序可以更改,但不是针对每个进程的。
但是,您可以安装一个信号处理程序,它将为您转储进程(但是,如果您的进程是多线程的,则必须停止线程)。
您可能需要查看Google Breakpad,以获得捕获迷你转储并将其发送到所需位置的库和系统。
它使用like that

相关问题