如何调试CgiCC应用程序
Howto Debug CgiCC App
我为windows和linux开发了一个Win32 C++cgi应用程序,并从头开始。我使用CgiCC作为库,使用Visual Studio 2010作为IDE。
我如何调试它?当我安装cgcc类时,程序会保持并等待CGI输入。
如何为我的CGI输入设置环境
我设置了一些环境变量,比如QUERY_STRING
但我不知道如何提供我的cgi应用程序在网络服务器上运行时所获得的值。
编辑:
我快到了
- 我在浏览时捕捉到了流量,并将内容写入了一个文件
- 然后,我将stdin重定向到那个文件:"<input.txt"作为visualstudio中的调试命令行参数
- 我在诸如CONTENT_LENGTH和CONTENT_TYPE之类的窗口下设置了一些环境变量
之后,我可以从我的输入中读取一些内容,如下所示:
cgicc::Cgicc cgi;
string u = cgi("user");
但在执行此操作时,我遇到了一个异常(从未分配的内存中读取以及类似的异常(:
vector<FormFile, allocator<FormFile>> files = cgi.getFiles();
如果加载正确,不知何故并非所有内容。
CGI应用程序通过环境变量和标准输入接收输入,因此您可以轻松复制web服务器为CGI任务设置的环境。
至于环境变量,这里列出了CGI协议中的环境变量。我建议您手动或更好地通过捕获生产web服务器提供给正在工作的cgi应用程序的环境来设置所有这些。由于环境变量是由子进程继承的,如果您在Windows命令提示符内的环境中设置这些变量,然后从同一窗口调用Visual Studio IDE,则当CGI应用程序在调试器内启动时,以及在不进行调试的情况下运行时,这些变量都将可用。
在您的情况下,获取标准输入替换可能会有点复杂,因为您使用的是文件上传表单。此网站包含一个模板,应该可以让您开始使用多部分/表单数据格式。通过表格上传文件的官方文件是RFC 1867。
我希望这能有所帮助。
自己解决:
- 使用与我编译项目相同的visual studio版本构建cgicc
- 将cgicc构建为静态库,而不是动态库
- 在我激活__declspec(dllexport(的项目中设置预处理器定义CGICC_EXPORTS
然后就成功了!
相关文章:
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 在C应用程序中运行C++(带有STL)函数
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用调试/崩溃报告将应用程序部署到客户端
- C++控制台应用程序阻止退出
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 将应用程序从32位移植到64位时出现问题
- 如何改变c++应用程序的视觉效果
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- phytec phyBOARD iMX-6在从闪存而不是SD卡运行qt5 opengles应用程序时表现不佳(FPS减半
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 如何从Windows应用程序输出到标准?
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- 如何在 64 位 vb.net Windows 应用程序中引用 32 位 dll
- 如何调试CgiCC应用程序