CGI程序在调试模式下运行

CGI program run in debug mode

本文关键字:运行 模式 调试 程序 CGI      更新时间:2023-10-16

我们有一个c++ CGI应用程序来处理一些web请求。我试图在调试模式下运行相同的分析目的。我采用的方法是用gdb:

调用它。

作为第一步-我重命名我的实际CGI应用程序,并放置我自己的程序同名

在该程序中,我试图使用GDB在调试模式下调用实际的CCGI应用程序:

const char* argv[] = ["gdb -p <pid> -batch -ex bt 2>/dev/null", NULL];
execve("./myprog", (char**)argv, NULL);

问题是,因为myrog是一个CGI应用程序,它从STDIN输入。

我如何在程序中捕获输入并将其传递给实际的CGI应用程序?

我这样做了:在cgi主我添加了代码来寻找一个现有的文件,如/var/tmp/flag。虽然存在,我运行在一个循环。有足够的时间通过gdb附加到cgi进程。之后,我删除/var/tmp/flag,从现在开始我可以调试我的cgi代码。

bool file_exists(const char *filename)
{
   ifstream ifile(filename);
   return ifile;
}
int cgiMain()
{
 while (file_exists ("/var/tmp/flag"))
     sleep (1);
 ...
 your code