1

Webリクエストを処理するC++CGIアプリケーションがあります。分析のために、同じものをデバッグモードで実行しようとしています。私が取ったアプローチは、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アプリケーションに渡すにはどうすればよいですか?

4

1 に答える 1

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 
于 2015-09-17T08:03:44.890 に答える