我一直在 ubuntu 上使用带有 cgi 的 lighttpd。我遇到了一个“500 - 内部服务器错误”案例,我想对其进行调试。
当我的二进制文件崩溃时,有没有办法让 lighttpd/cgi 转储核心?
我遇到了this page ,它有一个用于启用核心转储的字段,但在 lighthtpd.conf 中包含 server.core-files="enable"
似乎不起作用。
有什么想法吗?
谢谢。
附言 下面是我用来生成core的测试程序:
int main()
{
char* html = "<html>\n"\
"<header>" \
"<title>This is title</title></header>\n" \
"<body>\n"\
"Hello world\n"\
"</body>\n"\
"</html>";
html[1] = 'r';
std::cout<<html;
return 0;
}
我通过执行“ulimit -c unlimited”将限制设置为无限制。当我从命令行运行二进制文件时,我可以在当前目录中看到一个核心。但是从浏览器调用时,cgi-bin 中没有核心。 Cgi 日志有以下条目:
2018-07-29 17:20:41: (server.c.1558) server stopped by UID = 0 PID = 1
2018-07-29 17:21:18: (log.c.164) server started
2018-07-29 21:29:16: (mod_cgi.c.601) cgi died, pid: 28197
2018-07-29 21:29:17: (mod_cgi.c.601) cgi died, pid: 28202
最佳答案
您不需要要求 lighttpd 在崩溃时生成核心转储。你需要问内核。使用 sysctl -a | 检查grep kernel.core_pattern
如何/在何处/是否将核心文件写入您的系统并根据需要进行更改。
关于c++ - lighttpd:启用 cgi 二进制文件的核心转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51580197/