Как отладить приложение CgiCC - PullRequest
1 голос
/ 02 сентября 2011

Я разрабатываю приложение Win32 C ++ cgi для Windows и Linux и начинаю с нуля. Я использую CgiCC как lib и Visual Studio 2010 как IDE.

Как я могу отладить это? Когда я запускаю свой класс cgicc, программа удерживает и ожидает ввода CGI.

Как мне настроить среду для ввода CGI?
Я установил некоторые переменные окружения, такие как QUERY_STRING.
Но я понятия не имею, как предоставить значения, которые получит мое приложение cgi при работе на веб-сервере.

EDIT:
Я почти у цели.

  1. Я захватил трафик во время просмотра и записал это содержимое в файл.
  2. Затем я перенаправил stdin в этот файл: «
  3. Я установил некоторые переменные окружения под окнами, такие как CONTENT_LENGTH и CONTENT_TYPE.

после этого я могу читать некоторый контент из моего ввода, например:

cgicc::Cgicc cgi;
string u = cgi("user");

но я получаю исключение (чтение из нераспределенной памяти и тому подобное) при этом:

vector<FormFile, allocator<FormFile>> files = cgi.getFiles();

как-то не всегда, если загружено правильно.

Ответы [ 2 ]

2 голосов
/ 26 декабря 2011

Решил сам:

  1. Сборка cgicc с той же версией Visual Studio, с которой я компилирую свой проект.
  2. Сборка cgicc как статической библиотеки вместо динамической библиотеки.
  3. Установка препроцессора, определяющего CGICC_EXPORTS в моем проекте, который активировал __declspec (dllexport).

Тогда это сработало!

2 голосов
/ 06 сентября 2011

Приложения CGI получают свои входные данные через переменные среды и стандартный ввод, поэтому вы можете легко реплицировать среду, настроенную веб-сервером для задачи CGI.

Что касается переменных среды, здесь - это список переменных среды, которые являются частью протокола CGI. Я рекомендую вам установить их все вручную или еще лучше, захватив среду, предоставляемую работающему приложению cgi рабочим веб-сервером. Поскольку переменные среды наследуются дочерними процессами, если вы установите их в своей среде в командной строке Windows, а затем вызовете Visual Studio IDE из этого же окна, эти переменные будут доступны, когда ваше приложение CGI запускается внутри отладчика, а также когда вы запускаете его без отладки.

Получение стандартной замены ввода может быть немного сложнее в вашем случае, так как вы работаете с формой загрузки файла. Этот сайт содержит шаблон, который должен помочь вам начать работу с форматом multipart / form-data. Официальный документ для загрузки файлов через формы: RFC 1867 .

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...