CGI程序以调试模式运行

时间:2013-03-04 23:52:28

标签: c++ apache gdb

我们有一个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应用程序?

1 个答案:

答案 0 :(得分:1)

我这样做了: 在cgi main我添加了代码来查找现有文件,比如/ 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