我们有一个使用C和C++编写的服务器,目前会捕获SEGV并将一些内部信息转储到文件中。我希望能够在捕获SEGV时生成核心文件并将其写入磁盘,这样我们的支持代表和客户就不必纠结于ulimit,也不用等待崩溃再次发生才能获取核心文件。过去我们曾经使用abort函数,但它受制于ulimit规则,没有什么帮助。
我们有一些遗留代码读取/proc/pid/map并手动生成核心文件,但它已经过时,并且似乎不太可移植(例如,我猜测它在64位版本中可能无法工作)。在Linux进程中生成并转储核心文件的最佳方法是什么?
setrlimit(2)
*,将第一个参数(“资源”)传递为RLIMIT_CORE
即可。该函数的反函数是 *getrlimit(2)
*,它们都非常有用。 - Pryftan