我 运行 `"crash_demo.run"` 通过 `spawn-fcgi` 。如何收集`core`文件

I run `"crash_demo.run"` by `spawn-fcgi` . How to collect `core` file

1。问题

我 运行 "crash_demo.run" 通过 spawn-fcgi 。 如何收集 core 文件 .

2。背景与环境

我正在学习 C++ Web 编程。

  1. 网络服务器:nginx
  2. CGI(快速CGI):fastcgipp 3.0
  3. CGI 包装器:spawn-fcgi
    • 我没有使用 ngifix 提供的 FCGI Wrap
    • 我明白FCGI Wrap是spawn-fcgi驱动的,当然这是题外话了。
  4. 我的 C++ 应用程序。 (被称为crash_demo).

3。重现异常的步骤

  1. crash_demo 插入代码 throw "test exception str, check _core_ file" ,构建得到 crash_demo.run
  2. 运行 nginx : sudo nginx -c my_nginx_custom.config
  3. ulimit -c unlimited
  4. 运行 crash_demo.run 来自 spawn-fcgi : spawn-fcgi -a 127.0.0.1 -p 9000 -f /path/crash_demo.run
  5. 测试正常的http请求,http请求可以正常完成。
  6. 测试 crash_demo http 请求,得到 5xx 响应。
    • crash_demo.run所在目录没有看到core文件

我的猜测

  1. core 文件未生成。
  2. core 文件已生成,但我不知道文件路径。

有谁知道发生了什么事吗?



解决方案更新

我的问题有问题。

谢谢@sehe,我的步骤:

  1. 我看了两个网页
    1. https://man7.org/linux/man-pages/man5/core.5.html
    2. https://zhuanlan.zhihu.com/p/240633280
  2. update my /proc/sys/kernel/core_pattern
    • core -> core_%e_%p_%t
  3. ulimit -c unlimited
  4. spawn-fcgi -a 127.0.0.1 -p 9000 -f /path/crash_demo.run
  5. sudo find / core_ | grep core_crash_demo
    • 结果/path/core_crash_demo._5080_1652169152

所以,我对我的问题的猜测是失败的。

事实是,当我提出问题时,我没有生成 core 文件。

当我生成core文件成功时,core文件路径是crash_demo.run父目录。

这个问题可能更适合 askubuntu.com 或 serverfault.stackexchange.com。

您可能需要配置核心转储。由于我们不知道该平台,我假设可能是 Linux。参见例如core(5):

There are various circumstances in which a core dump file is not produced

根据我的经验,需要的是设置核心模式 (/proc/sys/kernel/core_pattern)