我们有一个服务器(用 C 和 C++ 编写),它当前捕获一个 SEGV 并将一些内部信息转储到一个文件中。我想在我们捕获 SEGV 时生成一个核心文件并将其写入磁盘,因此我们的支持代表和客户不必对 ulimit 大惊小怪,然后等待崩溃再次发生以获得核心文件。我们过去曾使用过 abort 函数,但它受制于 ulimit 规则并且没有帮助。
我们有一些读取 /proc/pid/map 并手动生成核心文件的遗留代码,但它已经过时,并且看起来不太便携(例如,我猜它在我们的 64 位中不起作用构建)。在 Linux 进程中生成和转储核心文件的最佳方法是什么?