Skip to content

debug - 生成coredump

https://stackoverflow.com/questions/131439/how-can-a-c-program-produce-a-core-dump-of-itself-without-terminating/131539#131539

https://stackoverflow.com/questions/979141/how-to-programmatically-cause-a-core-dump-in-c-c

除了之前说要提前设置ulimit -c unlimited外才能生成core dump;基本上都需要在程序在段错误的时候才会自动生成core dump,我们也还有一个需求就是在程序运行的过程中,我也想让他生成core dump.

  • 在代码层面上产生一个core dump

可以用代码动态检测程序的运行情况,发现有异常,可以通过代码的手段产生一个core dump

/**
 * @brief 代码层面产生一个coredump文件
 */
void create_core_dump(void)
{
    if (!fork()) {
        fprintf(stderr, "Crash the app to core dump!\n");
        int *invalid_ptr = NULL;
        *invalid_ptr     = 250;
    }
}
  • 用命令行发送信号给程序,让其强制退出

用命令行的方式,动态强制一个正在运行程序退出并产生一个core dump

pgrep {程序名} | xargs kill -SIGABRT