如何调试用C编写并在Apache2中运行的cgi程序?

Joe*_*Joe 3 c eclipse apache gdb cgi

我有一个用C编写的复杂cgi可执行文件,我在Apache2中配置,现在它成功运行.如何在源代码中调试此程序,例如设置断点和检查变量?像gdb或eclipse这样的工具?有关如何设置调试环境的任何教程?

提前致谢!!

Gra*_*sus 7

CGI接口基本上包括将HTTP请求传递给可执行文件的标准输入并在标准输出上获取响应.因此,您可以将测试请求写入文件并手动执行CGI,而无需使用Apache.然后可以使用GDB完成调试:

gdb ./my_cgi
>> break some_func
>> run < my_req.txt
Run Code Online (Sandbox Code Playgroud)

使用包含完整请求的my_req.txt:

GET /some/func HTTP/1.0
Host: myhost
Run Code Online (Sandbox Code Playgroud)

如果您绝对需要由Apache运行CGI,那么将GDB附加到正确的流程可能会变得棘手.例如,您可以将Apache配置为只有一个工作进程,与其连接gdb -p并使用set follow-fork-mode child以确保在请求到达时切换到CGI进程.