【发布时间】:2019-01-05 21:23:33
【问题描述】:
我一直在 ubuntu 上使用带有 cgi 的 lighttpd。我遇到了一个我想调试的“500 - 内部服务器错误”案例。
当我的二进制文件崩溃时,有没有办法让 lighttpd/cgi 转储内核?
我遇到了this page,它有一个启用核心转储的字段,但在 lighthtpd.conf 中包含server.core-files="enable" 似乎不起作用。
有什么想法吗?
谢谢。
附: 以下是我用来生成内核的测试程序:
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) 服务器由 UID = 0 PID = 1 停止
2018-07-29 17:21:18: (log.c.164) 服务器启动
2018-07-29 21:29:16: (mod_cgi.c.601) cgi 死了,pid: 28197
2018-07-29 21:29:17: (mod_cgi.c.601) cgi 死了,pid: 28202
【问题讨论】:
-
是什么让您如此确定您的 cgi 二进制文件会崩溃?日志是怎么说的?
-
我写了一个崩溃的测试程序。当我通过命令行运行时,我在当前目录中看到一个核心,但从浏览器调用时,cgi-bin 中没有核心。
-
@Swordfish 已更新。
-
这不是有效的 C++。字符串字面量是
const char *,查看这个:stackoverflow.com/questions/6949150/…
标签: c++ ubuntu cgi fastcgi lighttpd