每当我的进程崩溃时,我想创建一个核心转储。目前我正在遵循这种方法:
- 使用 gcc/g++ 的“-g”构建程序的特殊“调试”版本。
- 执行“ulimit -c 无限制”
- 现在,每当程序崩溃时,我们都会得到核心转储。
但我想尽量减少步骤数,以便:
- 应该始终创建核心转储。即使它是“发布”构建。不应要求用户
ulimit -c unlimited
手动执行命令“”。 - 该核心转储的回溯应该能够提供调用的文件、函数、行号。那是人类可读形式的堆栈跟踪。
- 我不想将程序构建为带有“-g”的调试版本。或者至少它不应该包含生成人类可读堆栈跟踪不需要的任何其他调试信息。因为这将是该程序的发布版本。
所以我有两个问题:
- 如何在程序的“发布”版本中创建核心转储?
- 总是。无需手动执行“
ulimit -c unlimited
”