[英]CGI program run in debug mode
我們有一個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 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.